我找到了here方法:
public static T GetValue<T>(object value)
{
if (value == null || value == DBNull.Value)
return default(T);
else
return (T)value;
}
如果“value”为NULL,如何重写它以获取null?
答案 0 :(得分:11)
您无需重写它。你只需将其称为:
GetValue<int?>(value);
答案 1 :(得分:5)
int
是值类型而不是引用类型 - 它的值不能为null
。
如果数据库中的INT列可以为空,请考虑使用int?
。
答案 2 :(得分:5)
如果“value”为NULL,如何重写它以获取null?
你不能 - int
不能null
。但是,您可以使用Nullable<int>
代替。但这只适用于价值类型。例如,将不再为T == string
工作。为了实现这一目标,您需要编写两个不同的函数,一个用于可空值类型,另一个用于引用类型。
public T? GetValue<T>(object value) where T : struct
{
if (value == null || value == DBNull.Value)
return null;
else
return (T?)value;
}
或者,terser:
public T? GetValue<T>(object value) where T : struct
{
return (value == null value == DBNull.Value) ? null : (T?)value;
}
(在所有情况下,T?
都是Nullable<T>
的快捷方式。)
答案 3 :(得分:0)
在C#中,int是一个值类型,因此不能为null,因为Jakub说。但是,您可以定义变量:
int? thisValue;
这可以设置为null。
答案 4 :(得分:0)
你的意思是:
public T GetValue<T>(object value){
if (value == null)
return null;
else if (value == DBNull.Value)
return default(T);
else
return (T)value;
}