さて、「ラムダ式」のトピック (第 17 章、デリゲート、デリゲートの C# 構文シュガー) について説明します。Jeffery は、C# コンパイラがバックグラウンドで次のような新しい非静的クラスを作成すると述べています。
- ラムダ式でアクセスされたすべてのローカル変数を格納するフィールド。
- 本体に Lambda 式が含まれ、署名/戻り値の型が Lambda Expressin が使用されたデリゲートと一致するメソッド。
次の 2 つの質問があります。
私は自分で少しデバッグを行い、ラムダ式がローカル変数の値を変更する場合(ラムダ式が使用されているメソッドで定義されている)、新しい値が式本体の外にも反映されることを確認しました。式が実際には別のクラスにあることを考えると、これはどのように可能ですか?
静的クラスで同じことが完全に実行できるのに、発行されたクラスを非静的にする必要があるのはなぜですか?
これが、私が理解できないほど単純な概念ではないことを願っています。
詳細を提供する必要がある場合はお知らせください。