我如何检查类型类或结构?
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);
}
答案 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。