gpt4 book ai didi

c# - 使用 EventArgs/EventArgs 委托(delegate)类型而不是……的事件的好处

转载 作者:太空狗 更新时间:2023-10-29 22:03:48 27 4
gpt4 key购买 nike

我了解使用带有签名 delegate void delegate_name(object sender, EventArgs e) 的委托(delegate)类型的事件的好处

a) 但除了它可以节省我们一些输入之外,还有其他原因我们应该使用已经定义的委托(delegate)类型 EventHandler/EventHandler<T>而不是使用签名 delegate void delegate_name(object sender, EventArgs e) 声明我们自己的委托(delegate)类型?

b) 我能想到的使用预定义委托(delegate)类型的另外两个原因 EventArgs/EventArgs<T>是:

  • 使用特定事件(比如 event EventHandler my_event)的人会立即知道如何使用该事件?

  • 也许一些流行的第三方方法接受参数 EventHandler/ EventHandler<T>委托(delegate)类型,因此如果我们的代码有可能使用这些第三方方法,我们应该使用预定义的委托(delegate) EventHandler/Eventhandler<T> ?

谢谢

最佳答案

对我来说,这个问题有点奇怪。否则这样做有什么好处(为某些 EventHandler<TEventArgs> 定义与 TEventArgs 完全匹配的委托(delegate)类型)?

也就是说,我能想到以“正常”方式进行操作至少有一个好处:某些 API 已经期望处理 EventHandler<TEventArgs>代表;例如,Rx Extensions包括一个看起来像这样的方法:

Observable.FromEvent<TEventArgs>(
Action<EventHandler<TEventArgs>> addHandler,
Action<EventHandler<TEventArgs>> removeHandler
);

如果您定义了自己的委托(delegate),使用像这样的方法——期望EventHandler<TEventArgs>委托(delegate) - 会变得比必要的更复杂,没有任何额外好处(无论如何我可以看到)。

关于c# - 使用 EventArgs/EventArgs<T> 委托(delegate)类型而不是……的事件的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3143852/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com