如何获取Generic参数的类型?

时间:2011-05-16 07:43:27

标签: c# generics

如何获得通用参数的类型?

例如:

void Example<T>()
{
  // Here I want to get the type of T (and how can I get if T is a primitive 
  // kind (int,bool,string) not class)
} 

3 个答案:

答案 0 :(得分:8)

Type type = typeof(T);

这将为您提供类型为T的类型对象。

type.IsPrimitive会告诉您它是否是原始类型之一,请参阅此处的列表:http://msdn.microsoft.com/en-us/library/system.type.isprimitive.aspx

另请注意,尽管string是一种基本类型,它与.NET系统非常集成,但它不是原始类型。 System.String是一个完整的类,而不是原始类。

答案 1 :(得分:6)

使用以下内容获取T的类型:

Type typeParameterType = typeof(T);

typeof (C# Reference)

答案 2 :(得分:2)

您还可以从类型为T的实例中获取T的类型:

instance.GetType();