EventHandler a = new EventHandler(control_RegionChanged);
EventHandler b = new EventHandler(control_RegionChanged);
if (a == b)
{
Console.WriteLine("Same!");
}
else
{
Console.WriteLine(a.GetHashCode() + " " + b.GetHashCode());
}
これは、Same!
をコンソールに書き込みます。デリゲートの新しいインスタンスでイベントの登録を解除する
control.RegionChanged += new EventHandler(control_RegionChanged);
control.RegionChanged -= new EventHandler(control_RegionChanged);
このコードの実行後、EventHandler
は登録解除されていますか?
実はそれはそうです。コンパイラはあなたのためにそれを行います。 – Samuel
私はちょうどそれをテストしました。そして、少なくとも私のテストでは、このようにハンドラを追加して削除した後で動作します。 – Lennaert
これは単に省略したものであり、コンパイラはまだ新しいEventHandlerになります。 –