使用typeof作为泛型类型参数

时间:2015-06-12 18:14:22

标签: c# .net generics typeof

根据typeof的文件:

  

[...]要获取表达式的运行时类型,可以使用.NET Framework方法GetType

因此,这意味着typeof必须是编译时表达式。

在关于Generic Type Parameters的文章中,声明:

  

[...]此特定类的type参数可以是编译器识别的任何类型。

编译器识别的任何类型都是编译器推断的任何类型,即编译时所知的任何类型。

如果这是真的,那么为什么不允许以下语句?

int value = GenericMethod<typeof(int)>();

1 个答案:

答案 0 :(得分:3)

typeof()返回一个Type对象,就像.GetType()一样,它不能用来代替一个类型。您可以做的是将<T>放在您的班级名称之后,然后:

T value = GenericMethod<T>();