为什么存在基本的EventArgs类

czu*_*ead 7 c# oop events

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

ang*_*son 8

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

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

如果由于某种原因,保存这些数据的类不在您的控制之下,则您继承它,并将您的属性添加到继承的类中.到现在为止还挺好.

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

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

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