遅延評価がlinqMax演算子にどのように関連しているかを理解するのに少し問題があります。
これは私のコードです:
var someList = new List<someType>
{
new someType { decimalValue = 32 }
};
line1: var valA = someList.Any() ? someList.Max(s => s.decimalValue) : 0.0M;
line2: var valB = someList.Any() ? someList.Max(s => s.decimalValue) : 0.0M;
line3: var valC = valB;
コードをステップスルーすると、次の動作が表示されます。
1行目が実行された後、valA = 0, valB = 0, valC = 0
2行目が実行された後、valA = 32, valB = 0, valC = 0
3行目が実行された後、valA = 32, valB = 32, valC = 32
割り当てられた後にのみ値を表示するのはなぜですか?また、割り当てられvalA
た後にのみ値を表示するのはなぜですか?valB
valB
valC
以下は私のデバッガーのスクリーンショットです。私のIDEには非標準的なものがあるに違いないと思います。
(出典:toastermagic.co.uk)