WEB开发网
开发学院软件开发C语言 [叩响C#之门]写给初学者:委托的概念 阅读

[叩响C#之门]写给初学者:委托的概念

 2010-09-30 20:56:41 来源:WEB开发网   
核心提示:有时我们需要将一个函数作为另一个函数的参数,这时就要用到委托(Delegate)机制,[叩响C#之门]写给初学者:委托的概念,委托是一个较难讲清楚的概念,笔者苦思数日,请新建一个名为“Delegate”的项目,然后添加如下代码,终于想出了一个巧妙的例子, 下面我们设计一个马戏表演函数RunCir

有时我们需要将一个函数作为另一个函数的参数,这时就要用到委托(Delegate)机制。委托是一个较难讲清楚的概念,笔者苦思数日,终于想出了一个巧妙的例子。

下面我们设计一个马戏表演函数RunCircus(),它的第一个参数是代表动物的函数,传给它什么样的动物,就进行什么动物的表演。请新建一个名为“Delegate”的项目,然后添加如下代码。

        //函数:狗表演
        static void DogAct(string name)
        {
            Console.WriteLine("Hello,I am " + name + "!");
            Console.WriteLine(@"
                    .----.
                 _.'__    `.
             .--(#)(##)---/#\
           .' @          /###\
           :         ,   #####
            `-..__.-' _.-\###/
                  `;_:    `''
                .'''''''`.
               /,Snoopy ,\
              //  COOL!  \\
              `-._______.-'
              ___`. | .'___
             (______|______)");

        }

        //函数:猫表演
        static void CatAct(string name)
        {
            Console.WriteLine("Hello,I am " + name + "!");
            Console.WriteLine(@"
              .-. __ _ .-.
               |  `  / \  |
               /     '.()--\
              |         '._/
             _| O   _   O |_
             =\    '-'    /=
               '-._____.-'
               /`/\___/\`\
              /\/o     o\/\
             (_|         |_)
               |____,____|
               (____|____)");

        }

        //函数:狮子表演
        static void LionAct(string name)
        {
            Console.WriteLine("Hello,I am " + name + "!");
            Console.WriteLine(@"
                      ,%%%%%%%%,
                     ,%%/\%%%%/\%%
                    ,%%%\c "" J/%%%
          %.       %%%%/ o  o \%%%
          `%%.     %%%%    _  |%%%
            `%%     `%%%%(__Y__)%%'
            //       ;%%%%`\-/%%%'
           ((       /  `%%%%%%%'
            \\    .'          |
             \\  /       \  | |
              \\/         ) | |
               \         /_ | |__
               (___________)))))))");

        }

        //定义委托
        delegate void AnimalAct(string name);

        //函数:马戏表演(第一个参数为AnimalAct型委托)
        static void RunCircus(AnimalAct animalAct, string name)
        {
            animalAct(name);
        }

        static void Main(string[] args)
        {
            //把函数DogAct()转换为AnimalAct型委托
            AnimalAct deleDogAct = new AnimalAct(DogAct);
            //把委托deleDogAct传给函数RunCircus()
            RunCircus(deleDogAct, "Snoopy");

            //把函数CatAct()转换为AnimalAct型委托,并传给函数RunCircus()
            RunCircus(new AnimalAct(CatAct), " Kitty ");

        }

1 2 3  下一页

Tags:叩响 写给 初学者

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接