ホームページ > バックエンド開発 > C++ > C# クロージャはどのようにして直接スコープ外の変数へのアクセスを可能にするのでしょうか?

C# クロージャはどのようにして直接スコープ外の変数へのアクセスを可能にするのでしょうか?

Susan Sarandon
リリース: 2025-01-08 08:01:41
オリジナル
375 人が閲覧しました

How Do C# Closures Enable Access to Variables Outside Their Immediate Scope?

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 パラメーターにアクセスすることです。

C# 6 ではラムダ式が導入され、同じ結果を達成するためのより簡潔な方法が提供されました。

<code class="language-csharp">public Person FindById(int id)
{
    return this.Find(p => p.Id == id);
}</code>
ログイン後にコピー
ラムダ式 (

) は、クロージャの動作をエレガントにカプセル化します。p => p.Id == id

要約すると、C# のクロージャーは、親関数のコンテキストへのアクセスを保持する入れ子関数を作成するためのメカニズムを提供します。これにより、より簡潔で再利用可能でカプセル化されたコードが可能になり、複雑なロジックが簡素化されます。

以上がC# クロージャはどのようにして直接スコープ外の変数へのアクセスを可能にするのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート