事件也“做”类似方法的事情,但它们没有返回类型而只有空值?
我很想知道,为什么会这样?为什么他们不返回类型?
最佳答案
因为事件可以由多个监听器处理。事件处理程序的顺序没有保证(尽管我认为它们是按照实际订阅的顺序调用的。)
相反,对于想要“返回”某些数据的事件,约定是有一个可变的 EventArgs 对象,例如 CancelEventArgs,它可以将其 Cancel 属性设置为 true。与返回值相比,此方法的优点是链中的事件处理程序可以查看该属性以查看其他处理程序是否已经设置了它。但是您仍然会遇到最后一个设置属性的人获胜的情况。
如果它是一个返回值,整个概念就会复杂得多。
关于.net - 为什么事件在 .NET 中没有返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/924689/