不,访问修饰符在运行时不会被考虑执行。只有在使用反射并查询程序集的元数据时,它们才会在编译后发挥作用。想象一下,访问修饰符就像混凝土模板。当混凝土还湿润时,它们被放置在其上,为湿混凝土提供形式和边界。一旦混凝土干燥,这些模板就被移除,因为它们不再需要。访问修饰符是您未编译代码的混凝土模板 - 一旦代码已编译,访问修饰符就不再起作用(即使它们是发出的 IL 的一部分)。编辑:也许“不再起作用”有点含糊。我的意思是,编译器的工作就是确保所有访问修饰符都得到适当的尊重,不会发生任何违规行为。运行时(至少 Microsoft 的 CLR - 其他运行时可以自由实现)相信编译器已经完成了它的工作,不需要进行进一步的检查。