根据accepted answer here,没有区别,但在MSDN中:
通常,您不必为事件声明委托,因为 您可以使用
EventHandler
或EventHandler<TEventArgs>
代表。您应该仅在极少数情况下声明委托,例如 使您的类可用于无法使用的遗留代码 泛型。
所以在我看来,微软强烈推荐通用的方法而不是简化版本,但是我不知道为什么或者有什么区别?
答案 0 :(得分:1)
我相信已接受的答案和您链接的MSDN文档说明相同的事情,使用EventHandler或EventHandler&lt;“T”&gt; (输入的内容越少),而不是创建自己的自定义委托。
从接受的答案中说:“......你应该更喜欢前者而不是后者,因为它更清晰,需要更少的打字。”
前者是:
public event EventHandler<MyEventArgs> SomeEvent;
来自MSDN: 对于EventHandler和EventHandler&lt;“TEventArgs”&gt;的场景。代表不工作,你可以定义一个代表 从接受的答案中定义委托是“后者”:
public delegate void MyEventHandler(object sender, MyEventArgs e);
答案 1 :(得分:0)
我认为,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; |
...