黑马程序员技术交流社区

标题: 委托用法举例? [打印本页]

作者: 忘忧草    时间: 2012-5-17 10:07
标题: 委托用法举例?
视频教程中好像没有具体讲到委托的实例,哪位同学举个例子,加深理解~
作者: 朱亮辉    时间: 2012-5-17 11:11
http://www.cnblogs.com/jimmyzhang/archive/2007/09/23/903360.html
你看一下这个链接的介绍吧,非常的详细,有代码有解析。
作者: 王友伟    时间: 2012-5-17 12:31
namespace delegate01
{
    delegate void Playball(string ball);                                    //定义一个委托

    class Person                                                            //声明一个类
    {
        private string name;

        public Person(string Name)                                           //构造函数
        {
            this.name = Name;
        }

        public void play(string ball)                                          //在类中声明一个方法,参数类型与委托一致
        {
            Console.WriteLine(name+" play "+ball );
        }
    }

    class Sport                                                               //声明第二个类                           
    {
        public void appb(string ball, params Playball[] pss)                   //在类中声明一个方法
        {
            if (pss == null)
            {
                Console.WriteLine("座谈会结束");
            }
            else
            {
                Playball ppb = null;                                          //实例化一个空的委托
                foreach (Playball ps in pss)                                 //将方法参数中的委托数组添加到空委托中,统一传入参数
                {
                    ppb += ps;
                }
                ppb(ball);
                Console.WriteLine();
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Person zs = new Person("zhang san");                                //实例化三个类的实例
            Person ls = new Person("li si");
            Person ww = new Person("wang wu");
            
            Playball zsp = new Playball(zs.play);                               //实例化三个委托,分别指向三个实例的方法
            Playball lsp = new Playball(ls.play);
            Playball wwp = new Playball(ww.play);

            Sport sport = new Sport();                                          //实例化第二个类

            sport.appb("basketball", zsp, lsp, wwp);                            //将委托导入到第二个类中,其实委托就像一个指针,将方法赋给需要引用的对象

            sport.appb("basketball",null);
           
            Console.ReadKey();
        }
    }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2