使用 typeof 作为泛型类型参数
本文关键字:泛型类型参数 typeof 使用 | 更新日期: 2023-09-27 17:55:40
根据typeof的文档:
[...]若要获取表达式的运行时类型,可以使用 .NET Framework 方法
GetType
因此,这意味着typeof
必须是编译时表达式。
在关于泛型类型参数的文章中,指出:
[...]此特定类的类型参数可以是编译器识别的任何类型。
编译器识别的任何类型都是编译器推断的任何类型,即编译时已知的任何类型。
如果这是真的,那么为什么不允许以下陈述?
int value = GenericMethod<typeof(int)>();
typeof() 返回一个 Type 对象,就像 .GetType() 会,它不能用来代替类型。不过,您可以做的是将类名放在<T>
之后,然后:
T value = GenericMethod<T>();