[英]MultiCast delegates in c#
当我们使用多播委托时,仅返回最后一个方法值。 我们是否有任何实际情况需要执行所有方法,但仅应像多播委托那样返回最后一个方法值。
并且事件与多播委托之间是否有任何关系?如果是,它们如何链接?
谢谢。
事件和多播委托之间是否有任何关系?
在C#中,每个委托声明都会生成一个多播委托。 事件实际上是内部的两个方法,称为带有委托参数的add
和remove
访问器。 它们的目的是添加/删除订户(实际上是更改基础的多播委托实例)。
我们是否有任何实际情况需要执行所有方法,但仅应像多播委托那样返回最后一个方法值?
不,实际上应该避免这种情况。 这就是框架中没有非空事件的原因。 在使用公共事件时,我们可以假定它们有多个订阅者。
对于类似的问题(如何返回每个订户的结果),我将不再重复我的较早答案,但也可能值得一试: 如何使用2个方法使用的字符串委托
另一方面,当委托实例仅用作回调(例如方法参数)时,它们通常是非无效的(例如Func<...>
委托族)。 尽管从技术上讲它们也是多播委托,但是并不期望它们有多个目标。 这些通常通过一些lambda表达式( () => DoSomething()
)实例化,在这种情况下,它们始终只有一个目标。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.