查找Type of Type参数

The*_*des 10 c# .net-2.0 c#-2.0

考虑以下:

private T getValue<T>(String attr)
{ ... }
Run Code Online (Sandbox Code Playgroud)

如何查看Type是什么?

我在考虑:

if("" is T) // String
if(1 is T) // Int32
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

Uns*_*ced 19

有功能typeof(T)吗?

  • if(typeof(T)== typeof(String))应该更快 (10认同)

Mar*_*atz 5

你可以使用这个功能typeof(T)吗?

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

if(typeof(T) == typeof(string)) // 做一点事


Kon*_*lph 5

如果你需要获得泛型类型参数的类型,这几乎肯定是函数设计中的一个缺陷; 这 "通用" 相反.因此,请改用重载.

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

  • "几乎肯定"有点强,特别是因为你不知道如何使用这些信息.我有一种方法来更新一个相当复杂的数据库结构,该结构可以更新几个不同表中的任意数量的不同列,并且需要验证传入的数据类型是否与数据库中列的类型相匹配. (2认同)