Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用typeof作为泛型类型参数_C#_.net_Generics_Typeof - Fatal编程技术网

C# 使用typeof作为泛型类型参数

C# 使用typeof作为泛型类型参数,c#,.net,generics,typeof,C#,.net,Generics,Typeof,根据以下文件: […]要获取表达式的运行时类型,可以使用.NET Framework方法GetType 因此,这意味着typeof必须是编译时表达式 关于的文章中指出: […]此特定类的类型参数可以是编译器识别的任何类型 编译器识别的任何类型都是编译器推断的任何类型,即编译时已知的任何类型 如果这是真的,那么为什么不允许使用以下语句 int value = GenericMethod<typeof(int)>(); int value=GenericMethod(); typeof

根据以下文件:

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

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

关于的文章中指出:

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

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

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

int value = GenericMethod<typeof(int)>();
int value=GenericMethod();
typeof()返回一个Type对象,就像.GetType()一样,它不能用来代替类型。不过,您可以将
放在类名之后,然后:

T value = GenericMethod<T>();
T value=GenericMethod();
因为
typeof()
返回表示参数的
Type
对象。它本身不是一种类型。这也是一个表达式,根据C#LS的说法,在那个位置是不允许的。