一目了然
public static class Conversion
{
public static T Read<T>(object value) where T :class
{
if (value is DBNull) return null;
if (value is null) return null;
if (value is Enum) return (T)Enum.Parse(typeof(T), value.ToString(), true);
return (T)Convert.ChangeType(value, typeof(T));
}
}
何时调用Read<T>
函数
var myVariable = Conversion.Read<bool?>(Row[nameof(IsFetchNextRecordAfterDelete)]);
错误CS0452类型“布尔?”必须是引用类型才能使用 在通用类型或方法中将其作为参数“ T” 'Conversion.Read(object)'
想知道为什么吗??是可为空的,表示其是引用类型,并且通用方法声明为where T : class
答案 0 :(得分:4)
“笨蛋?”是不是参考类型。这是可为空的值类型。 参见Nullable value types (C# reference) 基础类型是结构(它是值类型)。
答案 1 :(得分:2)