在C#多播委托中使用多播

时间:2011-06-09 18:33:26

标签: c# .net delegates multicastdelegate

何时通过单播代表进行多播委托是否有用?

我经常使用代理,主要是与C#lambdas结合使用,但我从未感受到使用C#委托的多播方面的冲动,即我从未希望在单个委托中将多个委托组合在一起。因此,我非常好奇多播代理在什么样的情况下是有用的 - 我只能想到一些例子,你可以通过其他方式轻松实现这些功能,比如链接代表或将它们放在列表中。

特别是,Eric Lippert的回答here给人的印象是,即使C#团队有时会忘记代表的多播性。

2 个答案:

答案 0 :(得分:7)

事件是使用MulticastDelegates的主要示例。所以,可能没有意识到,你每天都在使用它们。

答案 1 :(得分:7)

任何充当事件的事情都是这里的经典答案 - 然后调用者不需要知道谁在监听(只是调用它,如果它是非空的)。这是理想的,因为多个操作可以同时订阅 - 例如3个独立的控件观察(数据绑定)到视图模型上的相同属性。

委托作为函数(特别是返回值)的任何情况都是诡计,因为你需要考虑如何处理它 - 采取第一个?持续?聚合