C# クロージャを理解する: 直接スコープを超えた変数へのアクセス
C# クロージャーは、インライン デリゲートまたは匿名メソッドとも呼ばれ、強力なプログラミング構造です。 これらは入れ子になった関数であり、囲んでいる関数の実行が終了した後でも、周囲の (囲んでいる) 関数からの変数へのアクセスを維持します。
これを例で説明してみましょう:
<code class="language-csharp">public Person FindById(int id) { return this.Find(delegate(Person p) { return (p.Id == id); }); }</code>
匿名メソッド (delegate
) はクロージャーとして機能します。 重要なのは、id
関数のスコープ外で後で実行される場合でも、FindById
関数から FindById
パラメーターにアクセスすることです。
<code class="language-csharp">public Person FindById(int id) { return this.Find(p => p.Id == id); }</code>ラムダ式 (
) は、クロージャの動作をエレガントにカプセル化します。p => p.Id == id
以上がC# クロージャはどのようにして直接スコープ外の変数へのアクセスを可能にするのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。