C#编译器优化-未使用的方法C#编译器(VS2008或VS2010)在编译时是否移除未使用的方法?我认为决定是否使用公共方法可能会有问题,所以我猜它会编译所有公共方法。但是那些从未在类中使用过的私有方法呢?编辑:是否有一套关于编译器优化的规则记录在任何地方?只需检查反射器以获取发布版本。编译器不会删除未使用的私有方法。有一些方法可以在没有编译器知识的情况下使用方法,例如反射。所以编译器不会尝试猜测。它只是将方法留在那里。编译器删除的唯一私有方法是未实现的部分方法。对于C#编译器优化,请查看此处。编译器不会从程序集中删除任何公共或私有方法。我实际上可以用反射引起奇怪的问题并阻止对这些方法的运行时调用。当引发OnClick事件时,有许多框架(如XAML解析器)使您能够在没有静态绑定的情况下调用私有方法(想想XAML文件中的OnClick="myFunction"),此标记将调用可能私有的myFunction。..但编译器在编译时没有关于此行为的信息。动态代码遇到同样的问题,即IL生成。在完全信任的情况下执行时,您可以从任何对象访问私有方法。不,它们不会被删除。它可能会给你一个警告,但它不会自己做。这种优化是在JIT级别有效实现的,这很好,因为它适用于公共/私有/任何方法。如果从未调用该方法(忽略ngen等),则永远不会对其进行JIT。现在你可能会争辩说这仍然是元数据等空间的浪费,但正如其他人所指出的那样,私有并不是那么私有。以上就是C#学习教程的全部内容:C#编译器优化——未使用的方法。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
