78

采取以下代码:

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

以下 和有什么区别?

[object].[event] += anEvent;

//and

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

[更新]

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

4

3 回答 3

83

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

在 C# 2.0 中添加了委托推理。因此,对于 C# 1.0 项目,第二个示例是您唯一的选择。对于 2.0 项目,使用推理的第一个示例是我更喜欢在代码库中使用和查看的示例 - 因为它更简洁。

于 2009-02-15T10:59:03.087 回答
18
[object].[event] += anEvent;

只是语法糖-

[object].[event] += new EventHandler(anEvent);
于 2009-02-15T11:01:23.143 回答
11

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

于 2009-02-15T10:58:40.997 回答