コード内のメモリ リークをクリーンアップし、それ以上のリークを防止するためのチェックを行うよう依頼されました。切り離されていないハンドラーが主な原因であるように思われることに気付きました。ほとんどは単純明快ですが、コードには頭を悩ませたことがいくつかあります。
初め:
myObject.someEvent -= null;
それがまったく何もしないと仮定するのは正しいですか?(イベントがローカルの場合、本質的にマルチキャスト デリゲートであるため、イベントを null に設定できることはわかっています)。
次に、匿名ハンドラーの場合:
myObject.someEvent += ()=> { x + y; };
myObject.someEvent -= ()=> { x + y; };
匿名メソッドは 2 つの別個のデリゲートとしてコンパイルされるため、2 番目の命令も同様に価値がないと言っているのは正しいのでしょうか? (これを解決するための適切な解決策を探している人は、こちらを参照してください)。
「ええ、そうです」で解決したくありません。なぜこれらのことがうまくいかないのか知りたいです(私の主張が正しいと仮定して)。