.Net每个返回值的事件都有多个事件处理程序
如果我有一个事件,其处理程序返回bool,如果我附加多个事件会发生什么 看这个例子.Net每个返回值的事件都有多个事件处理程序,.net,event-handling,.net,Event Handling,如果我有一个事件,其处理程序返回bool,如果我附加多个事件会发生什么 看这个例子 public class MyClass { public delegate bool MyEventHandler(object sender, EventArgs e); public event MyEventHandler Submit; public void DoSubmissions() { if (Submit != null && Submit(this, null
public class MyClass
{
public delegate bool MyEventHandler(object sender, EventArgs e);
public event MyEventHandler Submit;
public void DoSubmissions()
{
if (Submit != null && Submit(this, null))
{
Console.Write("HOORAY");
}
}
}
因此,在我的示例中,处理程序在成功提交时返回true。但是我给事件分配了两个处理程序…会发生什么?是否使用第一个处理程序的返回?二号?也不两者都使用?最后要注册的事件的返回值。一般来说,这是一个糟糕的设计 考虑使用类似于在EventArgs中嵌入返回值的模式。它允许将来的处理程序检查和/或更改值。
ref
的工作原理是一样的,但在我看来有点出乎意料:
当签名包含通过引用传递的参数时,参数的最终值是调用列表中每个方法顺序执行并更新参数值的结果
但是,是的,在你的例子中,它是:
当委托调用的方法的签名包含返回值时,委托将返回调用列表中最后一个元素的返回值
也就是说,它们被添加到:
[addition]操作的结果是一个新的委托实例,该实例在调用时调用第一个操作数,然后调用第二个操作数
但是,因为没有人知道它是第一个、中间还是最后一个,所以对我来说似乎没用