是类还是结构

时间:2011-03-07 17:52:31

标签: .net c#-4.0

我如何检查类型类或结构?

 protected   T GetNullValue<T>(IDataReader reader, int ordinalId)
    {
        if (reader.IsDBNull(ordinalId))
        {
            //if T is struct.....
            //else if I is class
        }
        return (T)reader.GetValue(ordinalId);
    }

3 个答案:

答案 0 :(得分:7)

if (default(T) is ValueType)
   ...

是我目前能够提出的最有效的方法。

答案 1 :(得分:3)

获取对象的Type类,并进行检查。

Type t = reader.GetValue(ordinalId).GetType();
if (t.IsValueType){
    //Struct
} else { 
    //Class
}

如果你试图动态处理结果,我怀疑你将在代码中使用Type对象。

答案 2 :(得分:2)

如果T是值类型,则它不能为空。要使值类型为可空,您必须使用 System.Nullable struct。