c#重载了+=和-=这两个操作符来对委托链里的元素进行操作
using System;
delegate void Eatdelegate(string food);
class Mydelegate
{
public static void zsEat(string food)
{
Console.WriteLine("张三吃"+food);
}
public static void lsEat(string food)
{
Console.WriteLine("李四吃"+food);
}
public static void wwEat(string food)
{
Console.WriteLine("王五吃"+food);
}
}
class Test
{
static void Main()
{
Eatdelegate zs=new Eatdelegate(Mydelegate.zsEat);
Eatdelegate ls=new Eatdelegate(Mydelegate.lsEat);
Eatdelegate ww=new Eatdelegate(Mydelegate.wwEat);
Console.WriteLine("张三,李四,王五开坐谈会");
Eatdelegate eatChain;//声明一个委托链,不需要对它进行实例化
eatChain=zs+ls+ww;//把zs,ls,ww这几个委托实例加到eatChain委托链里
eatChain("西瓜");//调用委托链,按照以上+的先后顺序去调用以上的方法
Console.WriteLine("李四出去接电话");
eatChain-=ls;//通过-=把李四开除出这个委托链
eatChain("香蕉");
Console.WriteLine("李四回来了");
eatChain+=ls;//通过+=把李四加入到这个委托链
eatChain("苹果");
}
}