使用 typeof 作为泛型类型参数

Mat*_*ero 6 .net c# generics typeof

根据typeof的文档:

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

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

在关于泛型类型参数的文章中,指出:

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

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

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

int value = GenericMethod<typeof(int)>();
Run Code Online (Sandbox Code Playgroud)

mak*_*iuk 3

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

T value = GenericMethod<T>();
Run Code Online (Sandbox Code Playgroud)