类型“<null>”的值不能用作默认参数,因为没有到类型 'T' 的标准转换

A value of type '<null>' cannot be used as a default parameter because there are no standard conversions to type 'T'

我收到错误:

A value of type '' cannot be used as a default parameter because there are no standard conversions to type 'T'

在尝试编写这段代码时

protected T GetValue<T>(Expression<Func<T>> property, T defaultValueIfNull = null);

有没有人知道如何制作空值类型。有办法吗?

T 在这种情况下也可能是值类型,例如 int,不能是 null。您应该指定类型约束,将 T 限制为 类:

...T defaultValueIfNull = null) where T : class

另一种方法是使用 ...T defaultValueIfNull = default(T)) - 您不需要约束,但默认情况下值类型将变为 0,而不是 null.

类型没有限制T,所以可以是值类型。
您可以将方法定义重写为

protected T GetValue<T>(Expression<Func<T>> property, T defaultValueIfNull = default(T));


这意味着引用类型为 null,值类型为默认值。