猿问

c#中的MultiCast委托

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

事件和多播委托之间是否有任何关系?如果是,它们是如何联系的?

谢谢你。


饮歌长啸
浏览 73回答 1
1回答

陪伴而非守候

事件和多播委托之间有什么关系吗?在 C# 中,每个委托声明都会生成一个多播委托。事件实际上是内部的两个方法,调用add和remove带有委托参数的访问器。他们的意思是添加/删除订阅者(实际上更改了底层的多播委托实例)。我们是否有任何实际场景需要执行所有方法但只返回最后一个方法值,就像多播委托所做的那样?不,这实际上应该避免。这就是为什么框架中没有非空事件。当使用公共事件时,我们可以假设它们有多个订阅者。对于类似的问题(如何返回每个订阅者的结果),我不会重复我之前的回答,但它也可能值得检查:如何使用订阅了 2 种方法的字符串委托另一方面,当委托实例仅用作回调(例如方法参数)时,它们通常是非空的(例如Func<...>委托系列)。虽然从技术上讲,它们也是多播代表,但预计它们不会有多个目标。这些通常由一些 lambda 表达式 (&nbsp;() => DoSomething()) 实例化,在这种情况下,它们总是只有一个目标。
随时随地看视频慕课网APP
我要回答