类型为''不能用作默认参数,因为没有到类型'T'的标准转换

本文关键字:类型 因为 转换 标准 null 不能 默认 参数 | 更新日期: 2023-09-27 18:14:09

我得到错误:

类型为"的值不能用作默认形参,因为没有到'T'类型的标准转换

,而试图写这段代码

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

有人知道如何创建空值类型吗?有什么办法可以这么做吗?

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

类型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

相关文章: