为什么存在基本的EventArgs类

时间:2015-05-24 20:10:16

标签: c# oop events

这是更多的理论问题。我知道C#中的每个事件都必须有2个参数:object和eventargs。很清楚。但是,为什么基本的eventargs类甚至不可能通过它传递任何数据?当然我可以创建一个继承自基本类的新EventArgs类,但我只是错过了无法携带任何数据的类。

1 个答案:

答案 0 :(得分:7)

这是关于面向未来的代码。

该理论认为,如果在某些时候您发现您的代码应该向事件处理程序发布比以前更多的数据,您可以轻松地向传递给这些事件处理程序的对象添加更多属性。

如果出于某种原因,保存这些数据的类不在您的控制之下,则您继承它,并将您的属性添加到继承的类中。到目前为止一切都很好。

但是,如果您从未首先将任何对象传递给事件处理程序,则无法在没有现有代码中断的情况下向事件委托添加新参数。

因此,您将对虚拟对象EventArgs.Empty传递给事件现在使您能够稍后从EventArgs继承并开始将数据传递给相同的事件,而无需更改事件处理程序一点都不在大多数情况下,您甚至不必重新编译使用事件处理程序的程序集。

所以EventArgs只是你传递给事件处理程序的一个方便的类,你可以轻松地创建自己的类,但是因为除了作为可能的未来更改的占位符之外它没有任何意义,所以没有必要创建你自己的,只需使用EventArgs