删除事件处理程序(Removing event handlers)

2019-06-18 15:28发布

这是:

Button.Click -= new EventHandler(Button_Click);

与此相同:

Button.Click -= Button_Click;

我问,因为对我来说,似乎前者去除的新引用的方法,而后者是删除方法本身。 不过话又说回来,也许新的事件处理程序的部分是隐含在+ =或 - 如果=超载程序员不明确分配会这样?

如果它是不同的怎么样

Button.Click -= new EventHandler(Button_Click);

VS

Button.Click -= Button_Click;

谢谢。

Answer 1:

这是相同的。 第二个是用于第一仅仅语法糖,和相等比较被适当地重载委托类型:

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

来源: MSDN,Delegate.Equality操作



Answer 2:

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



文章来源: Removing event handlers