0

可能重复:
使用新处理程序附加事件处理程序与直接分配它

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

List.Changed += new ChangedEventHandler(ListChanged);

或者简单地说,

List.Changed += ListChanged;

这两个声明有什么区别?

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

4

2 回答 2

0

没有区别,第二种形式只是简单一点(代码更少)。

于 2012-08-31T08:54:38.350 回答
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);
于 2012-08-31T08:54:47.947 回答