这是一个更理论化的问题。我知道 C# 中的每个事件都必须有 2 个参数:object 和 eventargs。很明显。但是为什么基本的 eventargs 类在不可能传递任何数据的情况下仍然存在呢?当然我可以创建继承自基本类的新 EventArgs 类,但我只是错过了不能携带任何数据的类的要点。
最佳答案
这是关于面向 future 的代码。
理论认为,如果在某个时候您发现您的代码应该向事件处理程序发布比以前更多的数据,您可以轻松地向传递给这些事件处理程序的对象添加更多属性。
如果出于某种原因,保存这些数据的类不在您的控制之下,您可以继承它,并将您的属性添加到继承的类中。到目前为止一切顺利。
但是,如果您一开始就没有将任何对象传递给事件处理程序,那么您就无法在不破坏现有代码的情况下向事件委托(delegate)添加新参数。
因此,您将等于虚拟对象 EventArgs.Empty
的内容传递给事件,现在让您能够稍后继承 EventArgs 并开始将数据传递给相同的事件,而无需完全改变事件处理程序。在大多数情况下,您甚至不必重新编译使用事件处理程序的程序集。
因此 EventArgs
只是您传递给事件处理程序的一个方便的类,您可以同样轻松地创建自己的类,但是由于它除了作为 future 可能发生的更改的占位符之外没有任何意义,所以没有需要创建自己的,只需使用 EventArgs
。
关于c# - 为什么存在基本的 EventArgs 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30427840/