可能重复:
C#: Difference between ‘ += anEvent’ and ‘ += new EventHandler(anEvent)’
大家好,
我有两个事件处理程序。
在我的构造函数中,我将一个函数附加到事件处理程序,但是对于两个事件处理程序以不同的方式执行它。一个用新的Eventhandler,另一个用指向函数。他们似乎也一样吗?
首选方式是什么?为什么?
更新:已回答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);
}
}
}
答案 0 :(得分:3)
C#2引入了方法组转换,这是您的第二个表单正在使用的内容。它在内部完全相同 - 在这两种情况下,它都会生成EventHandler
的新实例。
我个人更喜欢第二种形式:它没有那么多的残余。它只是说出你感兴趣的东西。
(我没有发现确切的副本。尽管结束了这个问题,但仍然没有找到这个答案,因为它没有造成任何伤害。)
答案 1 :(得分:1)
答案 2 :(得分:1)
附加事件处理程序的两种方式都是相同的。在最后一种情况下,框架(从2.0开始)可以推断出类型本身。