首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义EventHandler与EventHandler<EventArgs>

自定义EventHandler与EventHandler<EventArgs>
EN

Stack Overflow用户
提问于 2011-12-29 20:50:44
回答 2查看 25.6K关注 0票数 63

最近我一直在想,这段代码之间是否有什么显着的区别:

代码语言:javascript
复制
public event EventHandler<MyEventArgs> SomeEvent;

还有这一条:

代码语言:javascript
复制
public delegate void MyEventHandler(object sender, MyEventArgs e);
public event MyEventHandler SomeEvent;

他们都做同样的事情,我还没能区分出什么不同。尽管我注意到.NET框架的大多数类都为它们的事件使用了自定义的事件处理程序委托。有什么特别的原因吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-29 20:53:23

你说得对;他们做的是一样的事情。因此,您可能更喜欢前者而不是后者,因为前者更清晰,需要的输入也更少。

许多.NET框架类都有自己的自定义事件处理程序委托,这是因为它们是在2.0版引入泛型(允许使用简写语法)之前编写的。例如,几乎所有的WinForms库都是在编写泛型之前编写的,而在那个年代,后者是唯一的方式。

票数 72
EN

Stack Overflow用户

发布于 2017-12-20 19:33:52

第二种方式提供了更多的灵活性和类型安全性。具有相应签名=>的方法更少,出错的地方也更少。自定义委托允许精确地指定您需要的参数(或者不指定任何参数)-没有sender+args cargo cult。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8668083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档