我理解使用带有签名delegate void delegate_name(object sender, EventArgs e)的委托类型的事件的好处。
( a)但是,除了它可能为我们节省一些输入之外,我们是否还有其他原因应该使用已经定义的委托类型EventHandler/EventHandler<T>而不是用签名delegate void delegate_name(object sender, EventArgs e)声明自己的委托类型?
( b)我认为使用预定义的委托类型EventArgs/EventArgs<T>的另两个原因是:
event EventHandler my_event )的人将立即知道如何使用该事件?EventHandler/ EventHandler<T>委托类型,因此如果我们的代码可能使用那些第三方方法,我们应该使用预定义的委托EventHandler/Eventhandler<T>谢谢
发布于 2010-06-29 19:05:29
对我来说,这个问题有点奇怪。否则这样做有什么好处(定义与某些EventHandler<TEventArgs>完全匹配的委托类型)?
尽管如此,我至少可以想到这样做有一个好处:某些API已经期望处理EventHandler<TEventArgs>委托;例如,Rx扩展包含一个类似于这样的方法:
Observable.FromEvent<TEventArgs>(
Action<EventHandler<TEventArgs>> addHandler,
Action<EventHandler<TEventArgs>> removeHandler
);如果您定义了自己的委托,使用这样的方法--期望使用EventHandler<TEventArgs>委托--将变得更加复杂,而不会带来任何额外的好处(无论如何,我可以看到这一点)。
发布于 2010-06-29 19:07:22
你忘了一个重要的:
发布于 2010-06-29 19:06:31
你已经回答了自己的问题:
EventHandler类型,让我们轻松地集成来自其他库的事件简而言之,除非你被迫使用它,否则没有理由不使用它(这通常是人们不知道或不理解它的结果)。
https://stackoverflow.com/questions/3143852
复制相似问题