基本用法:
都是为了获取某个实例引用的数据类型 System.Type
1.GetType()是先持有一个对象,通过.出来的
Object one;
one.GetType();
2.typeof是通过类型,得出来的
typeof(TClass)
注意事项:
1.xx.GetType(),是运行时通过对象反射到类型的
2.typeof(TClass),因为类型是确定的,在编译期就可以得知,故效率会比上面的高几十倍(40倍左右)
3.记录个问题:假如有一个泛型的方法,在里面使用typeof(T)获取类型,查看输出结果:
class A {}
class B : A {}
void Test<T>(T t) where T : A
{
cw(typeof(T));
}
A a = new A();
A b = new B();
Test(a);//输出的是 A
Test(b);//输出的还是A
Test<B>(b as B);//输出的是B
why?因为泛型方法在编译期间就已经确定了,前两者都是调用的下面的方法,所以都是A
void Test(A t)
{
cw(typeof(A));
}