c# - 删除事件处理程序

标签 c# events delegates

这是:

Button.Click -= new EventHandler(Button_Click);

与此相同:

Button.Click -= Button_Click;

我问是因为在我看来前者正在删除对方法的新引用,而后者正在删除方法本身。但话又说回来,也许新的 EventHandler 部分隐含在 += 或 -= 重载中,以防程序员没有像那样显式分配它?

万一不一样呢

Button.Click -= new EventHandler(Button_Click);

对比

Button.Click -= Button_Click;

谢谢。

最佳答案

是一样的。第二个只是第一个的语法糖,并且为委托(delegate)类型适本地重载了相等比较:

Two delegates of the same type with the same targets, methods, and invocation lists are considered equal.

来源:MSDN, Delegate.Equality Operator

关于c# - 删除事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1307607/

相关文章:

c# - Protobuf-net 序列化/反序列化 c# vs Linux c++

vb.net - 防止在自定义文本框中触发验证/验证事件 - vb.net

ios - 当请求访问照片的权限时,我如何对选择 "Don' t 允许的用户作出 react ?

oop - 什么是委托(delegate)?

IOS 按钮单击并更新 View

c# - 如何定义具有 N 个参数的委托(delegate)函数

c# - 你将如何声明 DLL 导入签名?

c# - 如何在特定 DataTable 行的剩余列中添加值?

c# - 使用 DataContractJsonSerializer 在 .net 中反序列化 json base64 二进制文件

ios - 如何使用 Ionic 3 在 iOS 上的任何输入之外监听按键事件