2012-08-22 112 views
1

我在应用空合并运算符时遇到以下错误。返回十进制和十进制空合并运算符

private decimal _currentImpulseId; 
// ... later on used in public property getter as follows 

public decimal CurrentImpulseId 
{ 
    get { return _currentImpulseId ?? 0M; } 
    set { _currentImpulseId = value; } 
} 

以下错误:

操作 '?'不能用于'decimal'类型的操作数,并且 'decimal'

为什么不能正常工作?空合并运算符不能使用小数或者我在这里丢失了什么?我知道如何在不使用操作员的情况下解决这个问题,但是这让我有点困惑,所以我想知道你是否知道这个问题的正确答案?

谢谢!

+1

那么这将是很难得到一个'decimal'的保持与空值 – V4Vendetta

回答

4

您会收到此错误消息,因为decimal是值类型,而不是可为空的值类型(例如decimal?)或引用类型。

MSDN

...和被用于定义空值类型或引用类型的默认值

decimal类型的变量的默认值是零,所以我不太清楚为什么你想在这种情况下使用这个操作符。

此外,后备字段变量(_currentImpulseId)不需要作为.NET 3.0,由于引进auto-implemented properties意味着你可以只写

​​
+2

噢,我的.. Ofcourse!我是这样的... – Jens

2

由于十进制是值类型见HERE,就得使其可以为空。 尝试

private decimal? _currentImpulseId; 
// ... later on used in public property getter as follows 

public decimal? CurrentImpulseId 
{ 
    get { return _currentImpulseId ?? 0M; } 
    set { _currentImpulseId = value; } 
} 
相关问题