为什么不使用自定义类而是继承 EventArgs 类?

21
我在想为什么我应该使用继承自EventArgs类的类来传递事件数据,而不是使用自定义类来执行相同的工作呢?
3个回答

28

您不必从 EventArgs 继承,但这样可以让使用您类的人使用和处理通用的 *Handler(object sender, EventArgs e) 声明。

如果您不从 EventArgs 继承,则他们必须使用显式类型声明

*Handler(object sender, YairsFakeEventArgs e)
同样的道理也适用于仅使用自定义委托,但它们更加明显不同。

18

因为您的事件参数类将与任何接受 EventArgs 对象的其他函数兼容。


1
"(object sender, EventArgs e)" 只是一种约定,对吧? - Yair Nevet
谢谢!我正在寻找答案。 - Mihail Georgescu

6

因为这是在.NET中标准且最惯用的方法。整个ASP.NET和WinForms事件模型都依赖于这些约定。如果另一个开发人员阅读你的代码,他将更容易理解它,因为这是标准。话虽如此,你当然可以使用任何你喜欢的类。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接