我在这里找到了方法:
public static T GetValue<T>(object value)
{
if (value == null || value == DBNull.Value)
return default(T);
else
return (T)value;
}
Run Code Online (Sandbox Code Playgroud)
如果"value"为NULL,如何重写它以获取null?
如果"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;
}
Run Code Online (Sandbox Code Playgroud)
或者,terser:
public T? GetValue<T>(object value) where T : struct
{
return (value == null value == DBNull.Value) ? null : (T?)value;
}
Run Code Online (Sandbox Code Playgroud)
(在所有情况下,T?都是快捷方式Nullable<T>.)