当T本身是一个类型时,为什么必须使用typeof(T)来获取Type?

时间:2012-04-16 07:27:44

标签: c# typeof

e.g。

Type t = typeof(T);
t.GetProperty("Company")

3 个答案:

答案 0 :(得分:7)

由于T不是Type对象,因此它只是一个类型参数。

在编译时,type参数将被实际类型替换。例如,对于为string类型生成的代码,typeof(T)实际上是typeof(string)。这里string不是Type对象,它只是一种数据类型。您需要typeof来获取该数据类型的Type对象。

答案 1 :(得分:1)

因为类型和描述类型的对象之间存在差异。

T是一种类型。 typeof应用于某个类型,并返回Type类型的对象,描述相关类型。

答案 2 :(得分:0)

另一种解释差异的尝试:

有编译时类型,例如stringintMyClass。你在编写代码时声明了它们。

有运行时类型。它们保存在Type类型的对象中。这些是在运行时存在于内存中的普通对象实例。你可以通过typeof(MyType)得到这样一个对象。这些类型对象可用于在运行时检查类型。