自定义EventHandler与EventHandler <EventArgs>

hai*_*yyu 63 c# events handlers

最近我一直想知道这段代码之间是否有任何显着差异:

public event EventHandler<MyEventArgs> SomeEvent;
Run Code Online (Sandbox Code Playgroud)

还有这个:

public delegate void MyEventHandler(object sender, MyEventArgs e);
public event MyEventHandler SomeEvent;
Run Code Online (Sandbox Code Playgroud)

他们都做同样的事情,我无法分辨出任何差异.虽然我注意到.NET Framework的大多数类都为其事件使用自定义事件处理程序委托.这有什么特别的原因吗?

Cod*_*ray 73

你是对的; 他们做同样的事情.因此,你应该更喜欢前者而不是后者,因为它更清晰,需要更少的打字.

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