C# 使用typeof作为泛型类型参数
根据以下文件: […]要获取表达式的运行时类型,可以使用.NET Framework方法C# 使用typeof作为泛型类型参数,c#,.net,generics,typeof,C#,.net,Generics,Typeof,根据以下文件: […]要获取表达式的运行时类型,可以使用.NET Framework方法GetType 因此,这意味着typeof必须是编译时表达式 关于的文章中指出: […]此特定类的类型参数可以是编译器识别的任何类型 编译器识别的任何类型都是编译器推断的任何类型,即编译时已知的任何类型 如果这是真的,那么为什么不允许使用以下语句 int value = GenericMethod<typeof(int)>(); int value=GenericMethod(); typeof
GetType
因此,这意味着typeof
必须是编译时表达式
关于的文章中指出:
[…]此特定类的类型参数可以是编译器识别的任何类型
编译器识别的任何类型都是编译器推断的任何类型,即编译时已知的任何类型
如果这是真的,那么为什么不允许使用以下语句
int value = GenericMethod<typeof(int)>();
int value=GenericMethod();
typeof()返回一个Type对象,就像.GetType()一样,它不能用来代替类型。不过,您可以将
放在类名之后,然后:
T value = GenericMethod<T>();
T value=GenericMethod();
因为typeof()
返回表示参数的Type
对象。它本身不是一种类型。这也是一个表达式,根据C#LS的说法,在那个位置是不允许的。