Jen*_*ens 1 c# null coalescing operator-keyword
应用空合并运算符时,我遇到以下错误.
private decimal _currentImpulseId;
// ... later on used in public property getter as follows
public decimal CurrentImpulseId
{
get { return _currentImpulseId ?? 0M; }
set { _currentImpulseId = value; }
}
Run Code Online (Sandbox Code Playgroud)
返回以下错误:
接线员'??' 不能应用于'decimal'和'decimal'类型的操作数
为什么这不起作用?null合并运算符是否不适用于小数或我在这里遗漏了什么?我知道如何在不使用操作员的情况下解决这个问题,但这有点困扰我,所以我想知道你是否知道这个问题的正确答案?
谢谢!
您收到此错误是因为decimal它是值类型,而不是可以为null的值类型(例如decimal?)或引用类型.
来自MSDN:
...用于为可空值类型或引用类型定义默认值
类型变量的默认值decimal为零,所以我不太清楚为什么要在这种情况下使用此运算符.
此外,从_currentImpulseId.NET 3.0开始,不需要支持字段变量(),因为引入自动实现的属性意味着您可以只写
public decimal CurrentImpulseId { get; set; }
Run Code Online (Sandbox Code Playgroud)