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