What is the difference of getting Type by using GetType() and typeof()?
Possible Duplicate:
Type Checking: typeof, GetType, or is?
哪一个是获得类型的首选方法?
只有在编译时知道该类型,并且试图获取相应的
现在和
- 您不需要在编译时知道类型(通常不知道)
- 您确实需要该类型的一个实例(否则,您没有任何东西可以调用
GetType )。 - 代码不需要访问实际类型-例如,它可能是其他程序集中的内部类型
有一点很奇怪:由于装箱的工作方式,
getType()在运行时工作,typeof()是编译时运算符。
所以,
1 2 3 4 5 6 7 8 9 | // untested, schematic void ShowType(Object x) { Write(x.GetType().Name); // depends on actual type // typeof(x) won't actually compile Write(typeof(x).Name); // always System.Object } ShowType("test"); |
将打印System.String和System.Object。
请参阅此问题以获得更好的示例。
getType是一个对象上的虚拟方法-这意味着给定一个类的实例,您可以检索相应的类型对象。
typeof是一个c运算符-它用于执行编译时查找,即给定表示类名的符号,检索它的类型对象。
1 |
不完全一样,使用时会出现问题继承。
即。:
类型可能不同,但如果可以安全地强制转换到这种类型。