类型为''不能用作默认参数,因为没有到类型'T'的标准转换
本文关键字:类型 因为 转换 标准 null 不能 默认 参数 | 更新日期: 2023-09-27 18:14:09
我得到错误:
类型为"的值不能用作默认形参,因为没有到'T'类型的标准转换
,而试图写这段代码
protected T GetValue<T>(Expression<Func<T>> property, T defaultValueIfNull = null);
有人知道如何创建空值类型吗?有什么办法可以这么做吗?
类型T
没有约束,所以它可以是一个值类型。
您可以将方法定义重写为
protected T GetValue<T>(Expression<Func<T>> property, T defaultValueIfNull = default(T));
这意味着引用类型为null
,值类型为默认值。
T
在这种情况下也可以是值类型,如int
,不能是null
。您应该指定一个类型约束,将T
限制为类:
...T defaultValueIfNull = null) where T : class
另一种选择是使用...T defaultValueIfNull = default(T))
-您不需要约束,但值类型默认为0
,而不是null
。