说我有两个方法,一个叫另一个。第二种方法的代码会产生编译时错误。由于它没有被调用,为什么编译器仍然费心去处理它?</ p>
void method1()
{
var i = 1;
//method2();
}
void method2()
{
int i = "2";
}
答案 0 :(得分:10)
您不能确定其他人不会在运行时使用反射调用该方法。你的代码必须编译或者它不是有效的代码 - 如果它从未使用过......请注释掉它!
要扩展此:
基本上在编译时你是强类型的 - .NET会键入检查所有内容以确保你想要做的是合法的,但是,你仍然可以在运行时由于空引用,坏的转换等等而抛出异常。
Reflection是.NET框架的一个组件,允许开发人员通过程序集元数据检查程序集类型的属性/字段/方法等
Reflection允许运行时类型发现和检查这些类型,它还允许调用方法/属性和修改字段等。(您甚至可以在运行时创建新的泛型类型或完全新的类型)。
换句话说,你不能保证你想的代码不会被调用,在某些时候也不会被调用。为了使反射成为可能,每一位代码都需要有效且可编译
该代码是否会在运行时成功是另一回事 - 但这就是我们处理异常的原因。
答案 1 :(得分:1)
然后,如果其他人稍后使用您编译的代码并决定使用它呢?
即使使用私有方法,反思也会使问题复杂化。
如果您不使用它,请将其丢失。 (或至少评论出来)