e.g。
Type t = typeof(T);
t.GetProperty("Company")
答案 0 :(得分:7)
由于T
不是Type
对象,因此它只是一个类型参数。
在编译时,type参数将被实际类型替换。例如,对于为string
类型生成的代码,typeof(T)
实际上是typeof(string)
。这里string
不是Type
对象,它只是一种数据类型。您需要typeof
来获取该数据类型的Type
对象。
答案 1 :(得分:1)
因为类型和描述类型的对象之间存在差异。
T
是一种类型。 typeof
应用于某个类型,并返回Type
类型的对象,描述相关类型。
答案 2 :(得分:0)
另一种解释差异的尝试:
有编译时类型,例如string
,int
或MyClass
。你在编写代码时声明了它们。
有运行时类型。它们保存在Type
类型的对象中。这些是在运行时存在于内存中的普通对象实例。你可以通过typeof(MyType
)得到这样一个对象。这些类型对象可用于在运行时检查类型。