小数和小数上的空合并运算符

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合并运算符是否不适用于小数或我在这里遗漏了什么?我知道如何在不使用操作员的情况下解决这个问题,但这有点困扰我,所以我想知道你是否知道这个问题的正确答案?

谢谢!

Ric*_*ett 5

您收到此错误是因为decimal它是值类型,而不是可以为null的值类型(例如decimal?)或引用类型.

来自MSDN:

...用于为可空值类型或引用类型定义默认值

类型变量的默认值decimal为零,所以我不太清楚为什么要在这种情况下使用此运算符.

此外,从_currentImpulseId.NET 3.0开始,不需要支持字段变量(),因为引入自动实现的属性意味着您可以只写

public decimal CurrentImpulseId { get; set; }
Run Code Online (Sandbox Code Playgroud)