删除事件处理程序

Car*_*rlo 39 c# events delegates

这是:

Button.Click -= new EventHandler(Button_Click);
Run Code Online (Sandbox Code Playgroud)

与此相同:

Button.Click -= Button_Click;
Run Code Online (Sandbox Code Playgroud)

我问,因为对我来说,似乎前者正在删除对方法的新引用,而后者正在删除方法本身.但话说回来,如果程序员没有明确地分配它,那么新的EventHandler部分可能隐含在+ =或 - =重载中?

万一它是不同的如何

Button.Click -= new EventHandler(Button_Click);
Run Code Online (Sandbox Code Playgroud)

VS

Button.Click -= Button_Click;
Run Code Online (Sandbox Code Playgroud)

谢谢.

Kon*_*lph 46

这是相同的.第二个只是第一个的语法糖,并且对于委托类型适当地重载了相等比较:

具有相同目标,方法和调用列表的两个相同类型的委托被认为是相等的.

来源:MSDN,Delegate.Equality运营商