[解決済み] C#でイベントサブスクリプションをクリアするにはどうしたらいいですか?
2022-05-05 15:42:03
質問
次のC#の授業を受けなさい。
c1 {
event EventHandler someEvent;
}
へのサブスクリプションが多い場合、そのサブスクリプションを削除する必要があります。
c1
's
someEvent
イベントが発生し、それらをすべて消去したいのですが、どのような方法があるのでしょうか?
また、このイベントへのサブスクリプションが、ラムダや匿名デリゲートである可能性も考慮してください。
現在のところ、私の解決策は
ResetSubscriptions()
メソッドを
c1
を設定する。
someEvent
をnullに変換します。これが何か目に見えない結果をもたらすかどうかは分かりませんが。
解決方法は?
クラス内部から、(隠し)変数をヌルに設定することができます。null参照は、空の起動リストを効率的に表現する標準的な方法です。
イベントは基本的に "subscribe" と "unsubscribe" を公開するもので、それのみです。
フィールドのようなイベントが実際に何をしているのかを知っておくとよいでしょう。 と というイベントが同時に発生します。クラス内では、変数を参照することになります。外から見ると、イベントを参照することになります。
参照:私の イベントとデリゲートに関する記事 をご覧ください。
関連
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み] DateTime型の誕生日から年齢を計算するにはどうしたらいいですか?
-
[解決済み] Microsoft Officeをインストールせずに、C#でExcel(.XLSおよび.XLSX)ファイルを作成するにはどうすればよいですか?
-
[解決済み] 動的に生成された要素にイベントバインディングを行うか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] ランダムな英数字の文字列を生成するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み] 2つのリストを結合する
-
[解決済み] [Solved] .NETでスレッドの終了を待つには?
-
[解決済み] あるイベントからすべてのイベントハンドラを削除する方法