1. ホーム
  2. c#

[解決済み] C#でイベントサブスクリプションをクリアするにはどうしたらいいですか?

2022-05-05 15:42:03

質問

次のC#の授業を受けなさい。

c1 {
 event EventHandler someEvent;
}

へのサブスクリプションが多い場合、そのサブスクリプションを削除する必要があります。 c1 's someEvent イベントが発生し、それらをすべて消去したいのですが、どのような方法があるのでしょうか? また、このイベントへのサブスクリプションが、ラムダや匿名デリゲートである可能性も考慮してください。

現在のところ、私の解決策は ResetSubscriptions() メソッドを c1 を設定する。 someEvent をnullに変換します。これが何か目に見えない結果をもたらすかどうかは分かりませんが。

解決方法は?

クラス内部から、(隠し)変数をヌルに設定することができます。null参照は、空の起動リストを効率的に表現する標準的な方法です。

イベントは基本的に "subscribe" と "unsubscribe" を公開するもので、それのみです。

フィールドのようなイベントが実際に何をしているのかを知っておくとよいでしょう。 というイベントが同時に発生します。クラス内では、変数を参照することになります。外から見ると、イベントを参照することになります。

参照:私の イベントとデリゲートに関する記事 をご覧ください。