2009-02-15 25 views
66

区别采取以下代码:C#: '+ = anEvent' 和 '+ =新的EventHandler(anEvent)'

private void anEvent(object sender, EventArgs e) { 
    //some code 
} 

是什么下面之间的差异?

[object].[event] += anEvent; 

//and 

[object].[event] += new EventHandler(anEvent); 

[更新]

显然,在这两个之间没有区别......前者是后者的只是语法糖。

+4

像ReSharper的一个工具会建议您删除多余的代码,因为它只是增加了噪音。 – 2009-02-15 23:34:10

回答

76

没有区别。在你的第一个例子中,编译器会自动推断你想要实例化的委托。在第二个示例中,您明确定义了委托。

委托推理是在C#2.0中添加的。所以对于C#1.0项目,第二个例子是你唯一的选择。对于2.0项目,使用推理的第一个示例是我希望在代码库中使用并查看的内容 - 因为它更简洁。

10

我不认为有区别。编译器将第一个转换为第二个。

14
[object].[event] += anEvent; 

只是语法糖 -

[object].[event] += new EventHandler(anEvent);