多播委托是一个“委托链”,可以一次传递(绑定)多个方法。 你也可以理解成一个数组,只是里面存放了很多方法。 多播委托的大致操作步骤: 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("测试用例");
}
}
}
结果如下:[