多播委托是一个“委托链”,可以一次传递(绑定)多个方法。 你也可以理解成一个数组,只是里面存放了很多方法。 多播委托的大致操作步骤: 1.委托类型 变量名称

public static MyDelegate myDelegate;

2.变量名称= 方法名;使用这种方式来给变量赋值;

myDelegate = Question;

myDelegate += new PersonAAA().AnswerAAA;
myDelegate += new PersonBBB().AnswerBBB;

myDelegate += Test;
myDelegate -= Test;

3.变量名称([参数列表]);

myDelegate();

代码如下: 新建一个multicastDelegate的C#控制台项目,新建两个类PersonAAA和PersonBBB,重点在Program类

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace multicastDelegate
{
class PersonAAA
{
public void AnswerAAA()
{
Console.WriteLine(“我是PersonAAA,我喜欢郑州”);
}
}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace multicastDelegate
{
class PersonBBB
{
public void AnswerBBB()
{
Console.WriteLine(“我是PersonBBB,我喜欢上海”);
}
}
}

Program类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace multicastDelegate
{
public delegate void MyDelegate();

class Program
{
    public static MyDelegate myDelegate;

    static void Main(string\[\] args)
    {
        //委托变量赋值,第一次使用“=”号
        myDelegate = Question;

        //第二次开始就要使用“+=”进行添加;
        //如果你还使用“=”,之前存在于该委托链内的方法,就会全丢失,只执行这个=的方法;
        myDelegate += new PersonAAA().AnswerAAA;
        myDelegate += new PersonBBB().AnswerBBB;

        myDelegate += Test;

        //可以使用“-=”把委托链中的某个方法移除
        myDelegate -= Test;

        //调用委托,按赋值的先后顺序依次执行
        myDelegate();

        Console.ReadKey();
    }

    private static void Question()
    {
        Console.WriteLine("你最喜欢哪个城市?");
    }

    private static void Test()
    {
        Console.WriteLine("测试用例");
    }

}

}

结果如下:[

](http://www.wjgbaby.com/wp-content/uploads/2017/08/17081405-300x155.png)
](http://www.wjgbaby.com/wp-content/uploads/2017/08/17081405-300x155.png)