[英]EventHandler vs. EventHandler<TEventArgs>
我相信接受的答案和您链接的 MSDN 文档都说明了同样的事情,使用 EventHandler 或 EventHandler<"T"> (较少输入)而不是创建您自己的自定义委托。
从接受的答案来看:“......你可能更喜欢前者而不是后者,因为它更清晰,需要更少的输入。”
前者是:
public event EventHandler<MyEventArgs> SomeEvent;
来自 MSDN:对于 EventHandler 和 EventHandler<"TEventArgs"> 委托不起作用的情况,您可以定义一个委托。
定义代表是已接受答案中的“后者”:
public delegate void MyEventHandler(object sender, MyEventArgs e);
在我看来,一旦EventHandler<MyEventArgs>
在您的项目中至少出现两次,您就会生成难以维护的复制和粘贴代码:
public event EventHandler<MyEventArgs> ItemBeginningEdit; ^
public event EventHandler<MyEventArgs> ItemCommited; |
public event EventHandler<MyEventArgs> ItemEditCancelled; |
...
为了保持代码干净,在这种情况下,您应该通过定义自己的MyEventHandler
委托来抽象事件处理程序类型。 如果您以后想从MyEventArgs
切换到MyEventArgs2
,您只需在一个地方更改它:
public delegate void MyEventHandler(object sender, MyEventArgs2 e);
public event MyEventHandler ItemBeginningEdit; ^
public event MyEventHandler ItemCommited; |
public event MyEventHandler ItemEditCancelled; |
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.