2012-08-22 92 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; } 
} 
相關問題