附加到事件处理程序
问题描述:
可能重复:
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);
}
}
}
答
C#2介绍方法组转换这是您的第二种形式正在使用的内容。它在内部执行完全相同的操作 - 在这两种情况下,它都生成EventHandler
的新实例。
我个人更喜欢第二种形式:它没有那么多的粗俗。它只是说,你有兴趣。
(我还没有发现确切的重复。尽管关闭的问题在这里离开这个答案,因为它做任何伤害。)
答
是的,他们这样做。 Resharper推荐后者。
答
这两种连接方式事件处理程序相同。在最后一种情况下(从2.0开始)框架能够推断类型本身。
都是一样的。 '新的EventHandler'代码现在是语法糖,不再需要。 – ChrisF 2010-07-02 09:28:16