以上是C#官方对委托的定义与介绍,常规的委托定义比如
delegate void test(string str);
但是这种委托通常是和一个事件绑定,我们需要编写观察者模式的项目时候通常会出现的现象是委托、事件与要调用方法进行一对多的绑定,这时候就需要用到多路广播委托,也就是多播委托。
C#对于多播委托的支持的有两种,通过Delegate.Combine和MulticastDelegate.Combine和两种方式进行创建。以下我们主要介绍后者。
微软对于MulticastDelegate的介绍很简单,如下。
它具体的使用方式很简单。
MulticastDelegate.Combine(Event, Event1).DynamicInvoke()
此时我们需要注意的是,传入的两个事件的委托类型必须是同一种委托,不然就会
当DynamicInvoke被执行成功后,方法就会按照先进先出的顺序被触发、执行。
当编译完成后我们会清楚地看到两种方式并无差别。