Mat*_*ero 6 .net c# generics typeof
根据typeof的文档:
[...] 要获取表达式的运行时类型,可以使用 .NET Framework 方法
GetType
因此,这意味着typeof必须是一个编译时表达式。
在关于泛型类型参数的文章中,指出:
[...] 这个特定类的类型参数可以是编译器识别的任何类型。
编译器识别的任何类型都是编译器推断的任何类型,即编译时已知的任何类型。
如果这是真的,那么为什么不允许以下语句?
int value = GenericMethod<typeof(int)>();
Run Code Online (Sandbox Code Playgroud)
typeof() 返回一个 Type 对象,就像 .GetType() 一样,它不能用来代替类型。你可以做的就是放在<T>你的班级名称后面,然后:
T value = GenericMethod<T>();
Run Code Online (Sandbox Code Playgroud)