I have this simple event :
public class ClassA { public event Func Ev; public int Do(string l) { return Ev(l); } }
Invoking a multicast non-void delegate returns the value of the last handler that was executed.
You have very little control over who is first or last. It is a lousy system to use.
That is why most events and delegates return void.
void