访问修饰符会影响C#中的性能吗?
答案 0 :(得分:9)
不,运行时不会将访问修饰符视为执行。他们在编译后唯一一次使用反射并查询程序集的元数据。
将访问修饰符视为具体表单。当混凝土湿润时,它们就会被放置到位,以便为湿混凝土提供形状和边界。一旦混凝土干燥,它们就会被移除,因为它们不再需要。访问修饰符是未编译代码的具体形式 - 一旦编译了代码,访问修饰符就不再是一个因素(即使它们是发出的IL的一部分)。
编辑:也许“不再是一个因素”有点模糊。我的意思是,编译器的工作是确保所有访问修饰符都得到适当的尊重并且不会发生违规。运行时(至少微软的CLR - 其他运行时可以自由地以他们认为合适的方式实现)信任编译器完成了它的工作,不需要进一步的检查。