为什么接受引用类型的泛型方法不接受可空类型作为参数?

问题描述 投票:0回答:2

一目了然,

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));
    }
}

When调用Read<T>函数

var myVariable = Conversion.Read<bool?>(Row[nameof(IsFetchNextRecordAfterDelete)]);

错误CS0452类型“布尔?”必须是引用类型才能使用在通用类型或方法中将其作为参数“ T”'Conversion.Read(对象)'

Wonder为什么?布尔?为null,表示它是引用类型,并且通用方法声明为where T : class

c# .net generics nullable value-type
2个回答
2
投票

'bool?'是not


0
投票

where T :class

© www.soinside.com 2019 - 2024. All rights reserved.