2

再定式化させてください。私はForEachループ内にいて、計算された小数を追加することになっていますか?値を小数にしますか?あなたが指摘したように、最初はもちろんnullであるoriginalAmount。したがって、最初にnullをチェックする必要があります。そうでない場合は、加算を行います。

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

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

originalAmountは、ループの外側で以前に定義されています。

混乱して申し訳ありませんが、必要に応じて質問を閉じる/削除することができます。

4

2 に答える 2

6

(コメントより)

私は、convertedAmount が持っている場合に限り、originalAmount に値を持たせたいと思っています。それ以外の場合は、null にする必要があります。

そう:

decimal? convertedAmount = ...

decimal? originalAmount = convertedAmount;

その要件のすべてを行います。

もっと冗長にすることもできますが、これ何の役にも立ちません:

// unnecessary: don't do this:
decimal? originalAmount =
    convertedAmount.HasValue ? convertedAmount.Value : (decimal?)null;
于 2012-10-22T12:11:35.037 に答える
2

一方または両方の値が null の場合に加算がどのように動作するかを指定する必要があります。提案として、次のようなものを試してください:

decimal? convertedAmount = ...
decimal? originalAmount = ...
if (convertedAmount.HasValue)
{
    originalAmount = originalAmount.GetValueOrDefault() + convertedAmount.Value;
}
于 2012-10-22T12:12:57.587 に答える