在事件监听器中使用handler构造函数:有什么区别?

时间:2012-08-31 08:53:26

标签: c# .net event-handling

  

可能重复:
  Attaching Eventhandler with New Handler vs Directly assigning it

我注意到有两种方法可以添加事件监听器:

List.Changed += new ChangedEventHandler(ListChanged);

或简单地说,

List.Changed += ListChanged;

这两个声明之间有什么区别?

Visual Studio中的自动完成功能会生成前者,但我不知道它们是否有不同的行为。此外,如果我们使用前者,我们如何删除听众?如果我们使用后者,List.Changed -= ListChanged;会工作吗,对吗?

2 个答案:

答案 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);