2012-10-22 33 views
2

讓我重新配置。我在一個ForEach循環中應該添加計算的小數嗎?值到小數?正如您所指出的那樣,originalAmount當然是第一次。 所以我只需要首先檢查null,否則做加法。在C中添加可爲空的小數位#

decimal? convertedAmount = Calculate(inputValue); //always returns a value 

originalAmount = originalAmount==null ? convertedAmount : originalAmount + convertedAmount; 

originalAmount的定義較早,在循環之外。

對不起,如有必要,問題可以關閉/刪除。

+5

「不起作用」是非常含糊。請說明您觀察到的情況與您的預期。 –

+7

你不能使用'+ =',因爲變量'originalAmount'還沒有值。考慮更簡單:'int i = 2; int j + = i;'現在:什麼是'j'?爲什麼? –

+0

我只想要originalAmount有一個值,如果convertedAmount有,否則它應該爲null。 – akrobet

回答

6

(從評論)

我只希望originalAmount有一個值,如果convertedAmount了,否則它應爲空。

所以:

decimal? convertedAmount = ... 

decimal? originalAmount = convertedAmount; 

它確實在這一要求的一切。

可以得更加詳細,但這也是沒有用處的

// unnecessary: don't do this: 
decimal? originalAmount = 
    convertedAmount.HasValue ? convertedAmount.Value : (decimal?)null; 
+0

對不起,在問題中忘記提及我在循環中,並且需要將convertedAmount添加到originalAmount。 – akrobet

1

您需要指定在一個或兩個值都是空的除了應該如何表現。作爲一個建議嘗試這樣的事情:

decimal? convertedAmount = ... 
decimal? originalAmount = ... 
if (convertedAmount.HasValue) 
{ 
    originalAmount = originalAmount.GetValueOrDefault() + convertedAmount.GetValue; 
}