参照自体を委任する

c# delegates
参照自体を委任する

デリゲートが自分自身を参照する方法はありますか? 私はこれを行う方法を探しています:

delegate void Foo();
list foos;

void test() {
    list.Add(delegate() {
        list.Remove(/* this delegate */);
    });
}

  5  1


ベストアンサー

あなたが何をしようとしているのか正確にはわかりませんが、デリゲートが次のように自分自身を参照することは可能です:

delegate void Foo();
List foos = new List();

void test() {
    Foo del = null;
    del = delegate { foos.Remove(del); };

    foos.Add(del);
}

13


1つの方法は、デリゲートが自分自身の引数を受け入れることです。

delegate void Foo(Foo self);
...
list.Add(delegate (Foo self) { list.Remove(self);});
...
foreach (Foo f in list) f(f);

別の方法は、それ自体を参照する変数を閉じることです。

Foo foo;
foo = delegate() { list.Remove(foo);}
list.Add(foo);

2


タイトルとURLをコピーしました