删除事件处理程序

时间:2009-08-20 17:13:34

标签: c# events delegates

这是:

Button.Click -= new EventHandler(Button_Click);

与此相同:

Button.Click -= Button_Click;

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

如果不同怎么样

Button.Click -= new EventHandler(Button_Click);

VS

Button.Click -= Button_Click;

感谢。

2 个答案:

答案 0 :(得分:46)

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

  

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

来源:MSDN, Delegate.Equality Operator

答案 1 :(得分:0)

最终结果是一样的。编译器会自动推断委托的类型,因此不需要新的运算符来创建委托。