查找Type of Type参数

时间:2010-03-01 12:51:49

标签: c# .net-2.0 c#-2.0

请考虑以下事项:

private T getValue<T>(String attr)
{ ... }

如何查看Type是什么?

我在考虑:

if("" is T) // String
if(1 is T) // Int32

有更好的方法吗?

4 个答案:

答案 0 :(得分:18)

功能typeof(T)

答案 1 :(得分:5)

您可以使用功能typeof(T)

所以要检查字符串,请执行

if(typeof(T) == typeof(string)) //做点什么

答案 2 :(得分:5)

如果需要获取泛型类型参数的类型,这几乎肯定是函数设计中的一个缺陷;这是“通用”的相反。因此,请使用重载。

除此之外,Unsliced已经给出了确定T类型的正确答案。

答案 3 :(得分:2)

实际上有两种方法可以做到这一点,如果期望的类派生自相同的类或接口或抽象类,您可以在通用签名中轻松完成

T GetValue()其中T:class,这将强制整个T类型为引用类型。 要么 T GetValue()其中T:IDisposable,这将强制整个T类型实现IDisposable。

对于你的情况typeof(T)将解决你的问题,但在这种情况下,使方法不通用。