.NET中的事件的返回类型是什么?

Tab*_*Tab 2 .net c# asp.net

我想知道什么是事件的默认返回类型:有人说事件没有返回类型; 其他人说事件有返回类型.谢谢.

Mat*_*don 15

它取决于您声明事件的委托的类型."典型"事件用类型的委托声明EventHandlerEventHandler<TEventArgs>返回void,但没有禁止声明具有不同类型委托的事件......如果不是最小惊喜原则(POLS).

"典型":

public event EventHandler MyVoidEvent;
Run Code Online (Sandbox Code Playgroud)

"自定义":

public delegate bool MyBoolDelegate(object sender, EventArgs e);
public event MyBoolDelegate MyBoolEvent;
Run Code Online (Sandbox Code Playgroud)

通常你会在EventArgs对象中放入"返回值" ,这就是事件不需要返回值的原因......但是如果它们被告知它们就可以.

  • 好答案.对于事件,通常,许多不同的代理可以"订阅"同一事件,每个事件都调用事件的(隐式)"add"访问器.因此,底层委托字段包含多播委托.然后,返回类型与`void`不同的多播委托通过在该多播委托的调用列表上返回***last***方法的输出来工作.这在事件的背景下几乎没有用.所以我强烈建议提问者不要声明其委托类型返回任何内容的事件. (3认同)

San*_*nda 8

默认情况下,大多数事件处理程序返回void,但处理程序可以返回值.

您可以参考这篇文章以获得进一步的参考:http://blogs.msdn.com/b/deviations/archive/2008/11/27/event-handlers-returning-values.aspx