ホームページ > バックエンド開発 > C++ > C# クロージャは親メソッドから変数にどのようにアクセスしますか?

C# クロージャは親メソッドから変数にどのようにアクセスしますか?

DDD
リリース: 2025-01-08 08:16:41
オリジナル
709 人が閲覧しました

How Do C# Closures Access Variables from Their Parent Methods?

C# クロージャの探索: 囲みメソッドからの変数へのアクセス

プログラミングでは、「クロージャ」とは、周囲の関数の実行が終了した後でも、周囲のスコープから変数へのアクセスを保持する関数を指します。 C# では、これは多くの場合、匿名メソッドまたはラムダ式を使用して実装されます。 重要な特徴は、クロージャが親メソッドの変数を「記憶」できることです。

C# の例:

次のコード スニペットを考えてみましょう:

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

ここで、FindById 内の匿名デリゲートは、id メソッドで宣言された FindById 変数にアクセスします。これは、クロージャが、それを囲んでいるスコープから変数へのアクセスを取得して維持できることを示しています。

さらなる学習:

クロージャについてさらに詳しく知りたい場合は、このテーマに関する Martin Fowler や Jon Skeet の著作などのリソースを参照してください。 詳細な説明と例が提供されています。

C# 6 構文の利用:

C# 6 では、ラムダ式を使用したクロージャのより簡潔な構文が導入されました。

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

このラムダ式は、前の例の匿名デリゲートと同じ機能を実現しますが、読みやすさが向上しています。

同等の簡潔な構文:

上記の例は、矢印式を使用してさらに簡略化できます。

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

これは、C# でクロージャを定義するよりコンパクトな方法を示しています。

以上がC# クロージャは親メソッドから変数にどのようにアクセスしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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