类型为&#39; <null>&#39;的值不能用作默认参数,因为没有标准转换来键入&#39; T&#39;

时间:2015-09-23 06:09:08

标签: c# generics type-conversion nullable

我收到错误:

  

类型&#39;&#39;的值不能用作默认参数,因为没有标准转化可以输入&#39; T&#39;

在尝试编写这段代码时

returns undefined

是否有人知道如何制作空值类型。反正有吗?

2 个答案:

答案 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