委托(3)委托链

来源:互联网 发布:怎么应对反野 知乎 编辑:程序博客网 时间:2024/06/05 07:52

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("苹果");
 }
}

原创粉丝点击