A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑朝明 中级黑马   /  2013-1-23 18:38  /  1941 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑朝明 于 2013-1-23 19:16 编辑

来个老鸟总结下。万分感谢!
using System;
delegate void Eatdelegate(string food);//定义Eatdelegate
class Man
{
    private string name;
    public Man(string name)//构造方法对name赋值
    {
        this.name=name;
    }
    private void eat(string food)//吃的方法
    {
        Console.WriteLine(name + "吃" + food);
    }
}
class party
{
    static void eatToghter(string food, params Eatdelegate[] values)//动态调用委托链的eatToghter方法
    {
        if (values == null)
        {
            Console.WriteLine("party结束");
        }
        else
        {
            Eatdelegate eatChain=null;//声明委托链
            foreach(Eatdelegate ed in values)//对委托链赋值
                eatChain+=ed;
            eatChain(food);//实现委托链
            Console.WriteLine();
        }
    }
    static void Main()
    {
        Man ZS = new Man("张三");
        Man LS = new Man("李四");
        Man WW = new Man("王五");
        Eatdelegate zs = new Eatdelegate(ZS.eat);//委托实例关联方法
        Eatdelegate ls = new Eatdelegate(LS.eat);
        Eatdelegate ww = new Eatdelegate(WW.eat);
        Console.WriteLine("张三、李四、王五开party");
        eatToghter("香蕉",zs,ls,ww); //委托作为参数传递给eatToghter方法      
        Console.WriteLine("李四上出去接电话");
        eatToghter("桔子",zs ,ww);
        Console.WriteLine("李四回来了");
        eatToghter("西瓜",zs,ls,ww);
        eatToghter("",null);
        Console.ReadKey();
    }
}

评分

参与人数 1技术分 +1 收起 理由
潘梦军 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 苗昆明 于 2013-1-23 19:08 编辑
  1. <p>//中文打招呼和英文打招呼的委托实例</p><p>public delegate void SayHello(string name);
  2.     class Program
  3.     {

  4.         static void Main(string[] args)
  5.         {
  6.             b b = new b();
  7.             b.DoWork("张三",b.sayChinese);
  8.             b.DoWork("zhangsan", b.SayEnglish);
  9.             Console.ReadLine();
  10.         }
  11.     }
  12.     class b
  13.     {
  14.         public void sayChinese(string name)
  15.         {
  16.             Console.WriteLine(name + ":你好");
  17.         }
  18.         public void SayEnglish(string name)
  19.         {
  20.             Console.WriteLine(name + ":hello");
  21.         }

  22.         public void DoWork(string name, SayHello makeSay)
  23.         {
  24.             makeSay(name);
  25.         }
  26.     }</p>
复制代码

评分

参与人数 1技术分 +1 收起 理由
潘梦军 + 1

查看全部评分

回复 使用道具 举报
{:soso_e100:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马