为了账号安全,请及时绑定邮箱和手机立即绑定

c#中的MultiCast委托

c#中的MultiCast委托

C#
饮歌长啸 2022-10-23 15:37:15
当我们使用多播委托时,只返回最后一个方法值。我们是否有任何实际场景需要执行所有方法,但只返回最后一个方法值,就像多播委托所做的那样。事件和多播委托之间是否有任何关系?如果是,它们是如何联系的?谢谢你。
查看完整描述

1 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

事件和多播委托之间有什么关系吗?

在 C# 中,每个委托声明都会生成一个多播委托。事件实际上是内部的两个方法,调用addremove带有委托参数的访问器。他们的意思是添加/删除订阅者(实际上更改了底层的多播委托实例)。

我们是否有任何实际场景需要执行所有方法但只返回最后一个方法值,就像多播委托所做的那样?

不,这实际上应该避免。这就是为什么框架中没有非空事件。当使用公共事件时,我们可以假设它们有多个订阅者。

对于类似的问题(如何返回每个订阅者的结果),我不会重复我之前的回答,但它也可能值得检查:如何使用订阅了 2 种方法的字符串委托

另一方面,当委托实例仅用作回调(例如方法参数)时,它们通常是非空的(例如Func<...>委托系列)。虽然从技术上讲,它们也是多播代表,但预计它们不会有多个目标。这些通常由一些 lambda 表达式 ( () => DoSomething()) 实例化,在这种情况下,它们总是只有一个目标。


查看完整回答
反对 回复 2022-10-23
  • 1 回答
  • 0 关注
  • 72 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号