using System; delegate void EatDelegate( string food); // 定义了一个委托,委托与预欲委托的方法具有相同的返回值,相同的参数个数与类型 class MyDelegate ... { static void zsEat(string food) ...{ Console.WriteLine("张三吃" + food); } static void Main() ...{ EatDelegate zs = new EatDelegate(zsEat);//代理了zsEat这个方法 zs("青菜"); }} 愚笨的代理 using System; delegate void EatDelegate( string food); // 定义了一个委托,委托与预欲委托的方法具有相同的返回值,相同的参数个数与类型 class MyDelegate ... { static void zsEat(string food) ...{ Console.WriteLine("张三吃" + food); } static void lsEat(string food) ...{ Console.WriteLine("李四吃" + food); } static void wwEat(string food) ...{ Console.WriteLine("王五吃" + food); } static void Main() ...{ EatDelegate zs = new EatDelegate(zsEat);//代理了zsEat这个方法 EatDelegate ls = new EatDelegate(lsEat);//代理了lsEat这个方法 EatDelegate ww = new EatDelegate(wwEat);//代理了wwEat这个方法 zs("青菜"); ls("青菜"); ww("青菜"); }} 使用委托链的代理 using System; delegate void EatDelegate( string food); // 定义了一个委托,委托与预欲委托的方法具有相同的返回值,相同的参数个数与类型 class MyDelegate ... { static void zsEat(string food) ...{ Console.WriteLine("张三吃" + food); } static void lsEat(string food) ...{ Console.WriteLine("李四吃" + food); } static void wwEat(string food) ...{ Console.WriteLine("王五吃" + food); } static void Main() ...{ EatDelegate zs = new EatDelegate(zsEat);//代理了zsEat这个方法 EatDelegate ls = new EatDelegate(lsEat);//代理了lsEat这个方法 EatDelegate ww = new EatDelegate(wwEat);//代理了wwEat这个方法 EatDelegate eatChain;//定义一个委托链,并未实例化 eatChain = zs + ls + ww; eatChain("青菜"); }} 愚笨的委托链 using System; delegate void EatDelegate( string food); // 定义了一个委托,委托与预欲委托的方法具有相同的返回值,相同的参数个数与类型 class MyDelegate ... { static void zsEat(string food) ...{ Console.WriteLine("张三吃" + food); } static void lsEat(string food) ...{ Console.WriteLine("李四吃" + food); } static void wwEat(string food) ...{ Console.WriteLine("王五吃" + food); } static void Main() ...{ EatDelegate zs = new EatDelegate(zsEat);//代理了zsEat这个方法 EatDelegate ls = new EatDelegate(lsEat);//代理了lsEat这个方法 EatDelegate ww = new EatDelegate(wwEat);//代理了wwEat这个方法 EatDelegate eatChain;//定义一个委托链,并未实例化 Console.WriteLine("张三,李四,王五开party"); eatChain = zs + ls + ww; eatChain("青菜"); Console.WriteLine("李四出去接电话"); eatChain -= ls;// 重载-=对委托链中的代理进行操作 eatChain("白菜"); Console.WriteLine("李四回来了"); eatChain += ls; eatChain("苹果"); }} using System; delegate void EatDelegate( string food); // 定义了一个委托,委托与预欲委托的方法具有相同的返回值,相同的参数个数与类型 class Man ... { private string name; public Man(string name) ...{ this.name = name; } public void eat(string food) ...{ Console.WriteLine(name + "吃" + food); }} class party ... { static void Main() ...{ Man ZS = new Man("张三"); Man LS = new Man("李四"); Man WW = new Man("王五"); EatDelegate zs = new EatDelegate(ZS.eat);//代理了ZS.eat这个方法 EatDelegate ls = new EatDelegate(LS.eat);//代理了LS.eat这个方法 EatDelegate ww = new EatDelegate(WW.eat);//代理了WW.eat这个方法 EatDelegate eatChain;//定义一个委托链,并未实例化 Console.WriteLine("张三,李四,王五开party"); eatChain = zs + ls + ww; eatChain("青菜"); Console.WriteLine("李四出去接电话"); eatChain -= ls;// 重载-=对委托链中的代理进行操作 eatChain("白菜"); Console.WriteLine("李四回来了"); eatChain += ls; eatChain("苹果"); }}