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库都是在泛型之前编写的,而在那些日子里,后一种形式是唯一的处理方式.