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

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

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

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

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

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

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