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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 忘忧草 中级黑马   /  2012-5-17 10:07  /  1815 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

视频教程中好像没有具体讲到委托的实例,哪位同学举个例子,加深理解~

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

2 个回复

正序浏览
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();
        }
    }
}

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
http://www.cnblogs.com/jimmyzhang/archive/2007/09/23/903360.html
你看一下这个链接的介绍吧,非常的详细,有代码有解析。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

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