【发布时间】:2015-08-28 20:30:32
【问题描述】:
根据typeof的文档:
[...]要获取表达式的运行时类型,可以使用.NET Framework方法
GetType
因此,这意味着typeof 必须是一个编译时表达式。
在关于Generic Type Parameters的文章中说:
[...] 这个特定类的类型参数可以是编译器识别的任何类型。
编译器识别的任何类型都是编译器推断的任何类型,即在编译时已知的任何类型。
如果这是真的,那为什么下面的说法是不允许的?
int value = GenericMethod<typeof(int)>();
【问题讨论】:
-
因为
typeof()返回一个代表参数的Type对象。它本身不是一种类型。这也是一个表达式,根据 C#LS,在那个地方是不允许的。