繁体   English   中英

C#中的MultiCast委托

[英]MultiCast delegates in c#

当我们使用多播委托时,仅返回最后一个方法值。 我们是否有任何实际情况需要执行所有方法,但仅应像多播委托那样返回最后一个方法值。

并且事件与多播委托之间是否有任何关系?如果是,它们如何链接?

谢谢。

事件和多播委托之间是否有任何关系?

在C#中,每个委托声明都会生成一个多播委托。 事件实际上是内部的两个方法,称为带有委托参数的addremove访问器。 它们的目的是添加/删除订户(实际上是更改基础的多播委托实例)。

我们是否有任何实际情况需要执行所有方法,但仅应像多播委托那样返回最后一个方法值?

不,实际上应该避免这种情况。 这就是框架中没有非空事件的原因。 在使用公共事件时,我们可以假定它们有多个订阅者。

对于类似的问题(如何返回每个订户的结果),我将不再重复我的较早答案,但也可能值得一试: 如何使用2个方法使用的字符串委托

另一方面,当委托实例仅用作回调(例如方法参数)时,它们通常是非无效的(例如Func<...>委托族)。 尽管从技术上讲它们也是多播委托,但是并不期望它们有多个目标。 这些通常通过一些lambda表达式( () => DoSomething() )实例化,在这种情况下,它们始终只有一个目标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM