使用委托作为参数进行动态调用

Code:
  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.Text;   
  4.   
  5. namespace ConsoleApplication4   
  6. {   
  7.     public delegate void EatDelegate(string s);   
  8.   
  9.     public  class Man   
  10.     {   
  11.         private string _Name;   
  12.   
  13.         public Man(string name)   
  14.         {   
  15.             this._Name = name;   
  16.         }   
  17.   
  18.         public void EatFood(string food)   
  19.         {   
  20.             Console.WriteLine(_Name  +"吃"+ food);   
  21.         }   
  22.     }   
  23.   
  24.     class Party   
  25.     {   
  26.         /// <summary>   
  27.         /// 委托作为参数传递   
  28.         /// </summary>   
  29.         /// <param name="food">吃什么东西</param>   
  30.         /// <param name="edValues">委托类型</param>   
  31.         static void EatTogether(string food, params EatDelegate[] edValues)   
  32.         {   
  33.             if (edValues == null)   
  34.             {   
  35.                 Console.WriteLine("座谈会结束");   
  36.             }   
  37.             else  
  38.             {   
  39.                 EatDelegate eatChain = null;   
  40.                 foreach (EatDelegate ed in edValues)   
  41.                 {   
  42.                     eatChain  += ed;   
  43.                 }   
  44.                 eatChain(food);   
  45.                 Console.WriteLine();   
  46.             }   
  47.         }   
  48.            
  49.         static void Main()   
  50.         {   
  51.             Man zs = new Man("张三");   
  52.             Man ww = new Man("王五");   
  53.             Man ls = new Man("李四");   
  54.   
  55.             EatDelegate edzs = new EatDelegate(zs.EatFood);   
  56.             EatDelegate edww= new EatDelegate(ww.EatFood);   
  57.             EatDelegate edls= new EatDelegate(ls.EatFood);   
  58.   
  59.             EatTogether("一起吃西瓜", edls, edww, edzs);    //  一起吃   
  60.             Console.WriteLine("张三出去打电话");   
  61.             EatTogether("葡萄", edww, edls);   
  62.             EatTogether(nullnull);   
  63.             Console.ReadLine();   
  64.         }   
  65.     }   
  66. }   

 

 

 

 

输出结果:

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值