.NET 委托与事件的一个小例子

第一次发随笔  有点小紧张 打错字了各位大神别笑话 ^_^

本人做开发的时间已经不短了 一直对委托与事件这块很懵懂  所以这两天就一直在看这方面的知识 终于被我拿下(可惜不是妹子) 不说精通 能能好的运用就行

下面我就把这个小栗子分享给大家 希望那些还对委托与事件处于懵懂的有一点帮助(这栗子可是很经典的)

废话不多说了 下面正式开始

首先想要熟练运用 最好能掌握 发布类与订阅类的关系

 

 

 

首先定义发布类:

 1     public class Student
 2     {
 3         private string name;
 4 
 5         public string Name
 6         {
 7             get { return name; }
 8             set { name = value; }
 9         }
10 
11         public Student(string _name)
12         {
13             this.name = _name;
14         }
15 
16         /// <summary>
17         /// 想睡觉了 想睡就睡
18         /// </summary>
19         public void WantSleep()
20         {
21             Console.WriteLine("学生" + name + "想睡觉了");
22 
23         }
24 
25         public void FindTeacher()
26         {
27             Console.WriteLine("发现班主任正在窗口观察学生");
28             TellMeEventArgs tellme=new TellMeEventArgs(3);//班主任
29             //发出通知  通知睡觉的!
30             if (OnTellMeTeacherChecking != null)
31             {
32                 Console.WriteLine("小手轻轻的那么一戳 都懂的");
33                 OnTellMeTeacherChecking(this, tellme);
34             }
35         }
36 
37 
38         /// <summary>
39         /// 告诉同桌 如果下课或放学或老师来了 提示一下 ^-^
40         /// </summary>
41         /// <param name="SideStudent">要告诉的同桌对象</param>
42         public void TellSide(Student SideStudent)
43         {
44             if (SideStudent != null)//关键是你要有同桌 没同桌就Over了
45             {
46                 if (SideStudent.OnTellMeTeacherChecking == null)
47                 {
48                     Console.WriteLine(name+""+SideStudent.Name+ "说:我睡一会儿,等下班主任来了 提醒提醒");
49                     SideStudent.OnTellMeTeacherChecking += new TellMeHandler(TellSide);//订阅事件
50                     Console.WriteLine("同学" + SideStudent.Name + "的回复: No Problem");
51                 }
52                
53             }
54         }
55 
56         /// <summary>
57         /// 通知睡觉的学生
58         /// </summary>
59         /// <param name="sender"></param>
60         /// <param name="e"></param>
61         public void TellSide(Object sender,TellMeEventArgs e)
62         {
63             switch (e.TellMeType)
64             {
65                 case 1:
66                     Console.WriteLine("下课了 怎么玩呢?");
67                     break;
68                 case 2:
69                     Console.WriteLine("放学了 回家吃饭");
70                     break;
71                 case 3:
72                     Console.WriteLine("同学" + name + "打起十二分精神努力学习中..... 32个赞");
73                     break;
74                 default:
75                     Console.WriteLine("什么状况?");
76                     break ;
77             }
78         }
79 
80         public delegate void TellMeHandler(Object sender, TellMeEventArgs e);//通知委托
81 
82         public TellMeHandler OnTellMeTeacherChecking;
83             
84     }

 

然后定义事件:

 1     public class TellMeEventArgs : EventArgs
 2     {
 3         private int tellMeType;//1:下课 2:放学 3:老师来了
 4 
 5         public int TellMeType
 6         {
 7             get { return tellMeType; }
 8             set { tellMeType = value; }
 9         }
10 
11         public TellMeEventArgs(int _tellMeType)
12         {
13             this.tellMeType = _tellMeType;
14         }
15     }

 

后面就是我们的班主任了:

 1     public class Teacher
 2     {
 3         private string name;
 4 
 5         public string Name
 6         {
 7             get { return name; }
 8             set { name = value; }
 9         }
10 
11         public Teacher(string _name)
12         {
13             this.name = _name;
14         }
15 
16         public void CheckStudenState()
17         {
18             Console.WriteLine("班主任静悄悄的在后面观察学生学习状态");
19         }
20     }

最后就开始上课了

 

 1     class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             Student stuLi = new Student("李X");//具体姓名就不公布了
 6             Student stuWang = new Student("王X");
 7             Console.WriteLine("铃铃铃铃铃铃铃铃 额 上课了");
 8             Thread.Sleep(2000);// 15分钟后[暂停2秒]
 9             Console.WriteLine("已上课15分钟");
10             stuLi.WantSleep();//瞌睡来了 想睡觉了 
11             stuLi.TellSide(stuWang);//给王X说说 老规矩
12             Teacher thacher = new Teacher("徐XX");//班主任即将降临 
13             thacher.CheckStudenState();//班主任到教室最后一排的窗口观察了
14             Console.WriteLine("学生{0}东张西望中...." , stuWang.Name);
15             stuWang.FindTeacher();
16         }
17     }

 运行效果图如下 :

有什么不对的希望大家不吝赐教  ^_^

.NET 委托与事件的一个小例子,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。