题
我一直在玩泛型,并希望我可以获得一些关于我创建的函数的反馈或建议,以帮助处理从DB中读取空值。我主要关注的是if语句。有没有更好的方法来确定T是否是字符串等?感谢。
public static T CheckNull<T>(object value)
{
if ((value != null) && value.Equals(DBNull.Value))
{
if (object.ReferenceEquals(typeof(T), typeof(String)))
value = string.Empty;
else if (object.ReferenceEquals(typeof(T), typeof(Boolean)))
value = false;
else
value = null;
}
return (T)value;
}
解决方案
无论T
的类型如何,您都可以回退到default(T)
,这将提供给定类型的默认值( ,string.Empty
0
,false
, null
等等......):
value = default(T);
编辑:default(string)
然而,返回<=>。
其他提示
您还需要涵盖其他原始数据类型。
value = default(T);
如果它是引用类型,则返回null,否则返回0,false或者给定类型T的适当默认值。
注意:默认(字符串)是null
,而不是string.Empty。如果您希望它是String.Empty
,则需要将其作为例外实现。
不隶属于 StackOverflow