自定义EventHandler与EventHandler <EventArgs>

最近我一直在想这个代码之间是否有任何显着的区别:

public event EventHandler<MyEventArgs> SomeEvent; 

和这个:

 public delegate void MyEventHandler(object sender, MyEventArgs e); public event MyEventHandler SomeEvent; 

他们都做同样的事情,我没有能够说出任何的区别。 尽pipe我已经注意到.NET Framework的大多数类都使用自定义事件处理程序委托来处理事件。 这是否有特定的原因?

你是对的; 他们做同样的事情。 因此,你应该比前者更喜欢后者,因为它更清晰,并且需要更less的打字。

许多.NET Framework类都有自己的自定义事件处理程序委托的原因是因为它们是在2.0版本中引入的generics(允许使用简写语法)之前编写的。 例如,几乎所有的WinForms库都是在generics之前编写的,而在那些日子里,后一种forms是唯一的做法。