1. ホーム
  2. c#

[解決済み】C#の無名メソッドの購読を解除する

2022-04-03 02:05:09

質問

匿名メソッドをイベントから退会させることは可能ですか?

このようにイベントをサブスクライブすると

void MyMethod()
{
    Console.WriteLine("I did it!");
}

MyEvent += MyMethod;

こんな風に退会できるんだ

MyEvent -= MyMethod;

しかし、匿名メソッドを使ってサブスクライブすると

MyEvent += delegate(){Console.WriteLine("I did it!");};

この匿名メソッドの登録を解除することは可能ですか? もし可能なら、どのように?

解決方法を教えてください。

Action myDelegate = delegate(){Console.WriteLine("I did it!");};

MyEvent += myDelegate;


// .... later

MyEvent -= myDelegate;

デリゲートへのリファレンスを保持しておくだけです。