最近我一直在想,这段代码之间是否有什么显着的区别:
public event EventHandler<MyEventArgs> SomeEvent;还有这一条:
public delegate void MyEventHandler(object sender, MyEventArgs e);
public event MyEventHandler SomeEvent;他们都做同样的事情,我还没能区分出什么不同。尽管我注意到.NET框架的大多数类都为它们的事件使用了自定义的事件处理程序委托。有什么特别的原因吗?
发布于 2011-12-29 20:53:23
你说得对;他们做的是一样的事情。因此,您可能更喜欢前者而不是后者,因为前者更清晰,需要的输入也更少。
许多.NET框架类都有自己的自定义事件处理程序委托,这是因为它们是在2.0版引入泛型(允许使用简写语法)之前编写的。例如,几乎所有的WinForms库都是在编写泛型之前编写的,而在那个年代,后者是唯一的方式。
发布于 2017-12-20 19:33:52
第二种方式提供了更多的灵活性和类型安全性。具有相应签名=>的方法更少,出错的地方也更少。自定义委托允许精确地指定您需要的参数(或者不指定任何参数)-没有sender+args cargo cult。
https://stackoverflow.com/questions/8668083
复制相似问题