2010-07-02 115 views
0

可能重复:
C#: Difference between ‘ += anEvent’ and ‘ += new EventHandler(anEvent)’附加到事件处理程序

大家好,

我有两个事件处理器。

在我的构造函数中,我为eventhandler附加了一个函数,但是以两种不同的方式为两个事件处理函数执行它。一个用新的EventHandler,另一个用指向该函数。他们似乎也这样做?

什么是最好的方式,为什么?

UPDATE:已经回答here

public partial class MyForm : Form 
{ 
    public event EventHandler Button1Clicked; 
    public event EventHandler Button2Clicked; 

    public MyForm() 
    { 
     InitializeComponent(); 

     simpleButton1.Click += new EventHandler(simpleButton1_Click); 
     simpleButton2.Click += Button2Click; 
    } 

    void simpleButton1_Click(object sender, EventArgs e) 
    { 
     if (Button1Clicked != null) 
     { 
      Button1Clicked.Invoke(sender, e); 
     } 
    } 

    void Button2Click(object sender, EventArgs e) 
    { 
     if (Button2Clicked != null) 
     { 
      Button2Clicked.Invoke(sender, e); 
     } 
    } 
} 
+2

都是一样的。 '新的EventHandler'代码现在是语法糖,不再需要。 – ChrisF 2010-07-02 09:28:16

回答

3

C#2介绍方法组转换这是您的第二种形式正在使用的内容。它在内部执行完全相同的操作 - 在这两种情况下,它都生成EventHandler的新实例。

我个人更喜欢第二种形式:它没有那么多的粗俗。它只是说,你有兴趣。

(我还没有发现确切的重复。尽管关闭的问题在这里离开这个答案,因为它做任何伤害。)

1

是的,他们这样做。 Resharper推荐后者。

1

这两种连接方式事件处理程序相同。在最后一种情况下(从2.0开始)框架能够推断类型本身。

相关问题