我收到错误:
类型''的值不能用作默认参数,因为没有标准转化可以输入' T'
在尝试编写这段代码时
returns undefined
是否有人知道如何制作空值类型。反正有吗?
答案 0 :(得分:16)
类型T
没有约束,因此它可以是值类型。
您可以将方法定义重写为
protected T GetValue<T>(Expression<Func<T>> property, T defaultValueIfNull = default(T));
对于引用类型和值类型的默认值,这意味着null
。
答案 1 :(得分:7)
T
也可能是值类型,例如int
,不能是null
。您应该指定一个类型约束,将T
限制为类:
...T defaultValueIfNull = null) where T : class
替代方法是使用...T defaultValueIfNull = default(T))
- 您不需要约束,但默认情况下,值类型将变为0
,而不是null
。