Yoc*_*mer 17 c# compiler-construction optimization visual-studio-2010 visual-studio-2008
C#编译器(在VS2008或VS2010中)是否在编译时删除未使用的方法?
我认为决定是否使用公共方法可能有问题,所以我猜它会编译所有的公共方法.
但是在类中从未使用的私有方法呢?
编辑:
是否存在关于编译器optmization的一系列规则,这些规则记录在任何地方?
编译器不会从程序集中删除任何方法,公共或私有.实际上,我可以通过反射引起奇怪的问题,并阻止对这些方法的运行时调用.
有许多框架(比如XAML解析器),它使您能够在没有静态绑定的情况下调用私有方法(在XAML文件中考虑OnClick ="myFunction")当引发OnClick事件时,此标记将调用可能的私有myFunction. ..但是编译器在编译时没有关于这种行为的信息.
动态代码也遇到同样的问题,也就是IL生成.并且您可以在完全信任下执行时从任何对象访问私有方法.