委托
来源:互联网 发布:万方数据库找文献 编辑:程序博客网 时间: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