77

複製

.NETのクロージャ

C#のクロージャとは何ですか?

4

1 に答える 1

108

C#でのクロージャは、インラインデリゲート/匿名メソッドの形式を取ります。親メソッドにはクロージャが付加されています。つまり、親のメソッド本体で定義された変数は、匿名メソッド内から参照できます。ここにそれについての素晴らしいブログ投稿があります。

例:

public Person FindById(int id)
{
    return this.Find(delegate(Person p)
    {
        return (p.Id == id);
    });
}

MartinFowlerJonSkeetのブログもご覧ください。少なくともそのうちの1つから、より多くの「詳細」の内訳を取得できると確信しています。

C#6の例:

public Person FindById(int id)
{
    return this.Find(p => p.Id == id);
}

これは

public Person FindById(int id) => this.Find(p => p.Id == id);
于 2009-02-27T16:29:52.787 に答える