委托

来源:互联网 发布:万方数据库找文献 编辑:程序博客网 时间:2024/05/14 20:17

                                     (理论)

【什么是委托】
    委托是一种数据类型,它可以引用特定格式(参数、返回类型)。

                                    (入门实例)

【背景】
    模拟大学里,学生上课的情况。假设某个班5名同学,某天上课,A同学没有去。另外四个同学去上课了,上课期间,B同学觉得没意思就趁老师不注意跑了出来。老师一番长篇大论后,宣布下课,C、D、E同学下课后完成不同的事情。

【代码实例】
    
    class Program    {        static void Main(string[] args)        {            Teacher MissLi=new Teacher ();            CollegeStudent StudentA = new CollegeStudent("张三", "去洗澡!",MissLi );            CollegeStudent StudentB = new CollegeStudent("李四", "去图书馆!", MissLi);            CollegeStudent StudentC = new CollegeStudent("王五", "去打篮球!", MissLi);            CollegeStudent StudentD = new CollegeStudent("赵六", "回宿舍睡觉!", MissLi);            CollegeStudent StudentE = new CollegeStudent("孙七", "去超市购物!", MissLi);            //B同学去上课            StudentB.GotoClass();            //B同学逃跑了。。。            StudentB.LeaveClassBySelf();            //C同学去上课            StudentC.GotoClass();            //D同学去上课            StudentD.GotoClass();            //E同学去上课            StudentE.GotoClass();            //老师宣布下课            MissLi.EndThisClass();            Console.Read();        }    }    //定义老师类     class Teacher    {        //定义委托类型        public  delegate void EndClass();        //定义委托事件        public event EndClass SayEndClass;        //老师宣布下课        public void EndThisClass()        {            if (SayEndClass != null)            {                SayEndClass();            }        }    }    //学生类    class CollegeStudent    {        private string name;        private string DoingThings;        Teacher CollegeTeacher;        //构造函数        public CollegeStudent(string name, string DoingThings,Teacher CollegeTeacher)        {            this.name = name;            this.DoingThings = DoingThings;            this.CollegeTeacher = CollegeTeacher;        }        //学生下课后的行为        public void LeaveClass()        {            Console.WriteLine("下课了,{0}同学{1}",name,DoingThings  );        }        //去上课        public void GotoClass()        {            Console.WriteLine("{0}同学上课了!",name );            CollegeTeacher.SayEndClass += new Teacher.EndClass(this.LeaveClass);        }        //中途逃跑        public void LeaveClassBySelf()        {            Console.WriteLine("{0}同学中途逃跑了。。。",name );            CollegeTeacher.SayEndClass -= new Teacher.EndClass(this.LeaveClass );        }    }
</pre><pre name="code" class="csharp" style="font-family: SimSun;font-size:18px;">【执行后的效果】:
<img src="http://img.blog.csdn.net/20150313190230412?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3hsMDkyMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />

                                       (总结)

1、实践才是检验真理的唯一标准。本来我以为委托这段代码我没有问题了,可是真正实现过程中我才发现并不是我想的那样。所以学习过程中,自己以为很明白,也要找个小例子来验证一下。

2、在学习过程中找到快乐。在这段代码中,我基本上属于A类或者B类。这让我在敲代码过程中,有共鸣,很有动力来实现这个小例子。

1 0
原创粉丝点击