Moh*_*ava 10 c# generics nullable type-conversion
我收到错误:
类型''的值不能用作默认参数,因为没有标准转换来键入'T'
在尝试编写这段代码时
protected T GetValue<T>(Expression<Func<T>> property, T defaultValueIfNull = null);
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何制作空值类型.反正有没有这样做?
Mik*_*aev 16
类型没有约束T
,因此它可以是值类型.
您可以将方法定义重写为
protected T GetValue<T>(Expression<Func<T>> property, T defaultValueIfNull = default(T));
Run Code Online (Sandbox Code Playgroud)
这null
对于值类型的引用类型和默认值意味着什么.
T
在这种情况下,也可能是值类型,例如int
,不可以null
.您应该指定一个类型约束,限制T
为类:
...T defaultValueIfNull = null) where T : class
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用...T defaultValueIfNull = default(T))
- 您不需要约束,但0
默认情况下值类型将变为,而不是null
.