可能重复:
Attaching Eventhandler with New Handler vs Directly assigning it
我注意到有两种方法可以添加事件监听器:
List.Changed += new ChangedEventHandler(ListChanged);
或简单地说,
List.Changed += ListChanged;
这两个声明之间有什么区别?
Visual Studio中的自动完成功能会生成前者,但我不知道它们是否有不同的行为。此外,如果我们使用前者,我们如何删除听众?如果我们使用后者,List.Changed -= ListChanged
;会工作吗,对吗?
答案 0 :(得分:0)
没有区别,第二种形式只是更简单(代码更少)。
答案 1 :(得分:0)
两者都会生成相同的IL,因此存在无差异。在较短的示例中,编译器自动推断要使用的委托类型。
删除侦听器同样可以互换:
// both will work the same way, no matter which one was used to register the handler
List.Changed -= ListChanged;
List.Changed -= new ChangedEventHandler(ListChanged);