猫大叫一声,主人被惊醒,所有的小老鼠开始逃窜。
期初想到的是事件调用方法。
在猫叫的事件中调用一对方法就可以了。
但是,当事件很多的时候 难保大家写着写着就忘记了。
总不能有 10000个人的时候调用 10000个方法吧
所以就应该用委托来控制
1、先定义一个委托
public delegate void AlertHandler();
2、我们再为这个委托定义个事件
public event AlertHandler AlertEvent;
3、推理思想
事件执行的时候 有3件事情要做
就是
小猫要叫
人要醒
老鼠要跑所以在建立三个类的时候要 对三个类进行委托一个方法
小猫叫 就直接告诉自己就好了
人醒、老鼠跑、 这两个需要房间来告诉他们
因为都是在一个房间内部
4 建立一个控制台程序
代码如下
//定义猫大叫事件的代理
public delegate void AlertHandler(); //主人类 class Human { //主人被惊醒的方法 public void Wake() { Console.WriteLine("主人:死猫别叫"); } } //老鼠类 class Mouse { //老鼠被吓包的方法 public void Run() { Console.WriteLine("老鼠:有危险,快跑!"); } } //猫类 class Cat { //猫大叫事件 public event AlertHandler AlertEvent; public Cat() { //猫大叫时执行Cry方法 AlertEvent += new AlertHandler(Alert); } //猫大叫事件执行的处理程序 public void Alert() { Console.WriteLine("猫:喵...喵..."); } //猫大叫的方法 public void Cry() { //触发猫大叫的事件 AlertEvent(); } } //房子类 class House { //房子里有一只老鼠、一只猫和主人 public Mouse mouse = new Mouse(); public Human human = new Human(); public Cat cat = new Cat(); //由于在一个房子里,猫大叫的事件会引发老鼠“逃跑”和主人“惊醒” //所以在这里把老鼠“逃跑”和主人“惊醒”两个方法挂接到猫大叫的事件上。 public House() { cat.AlertEvent += new AlertHandler(mouse.Run); cat.AlertEvent += new AlertHandler(human.Wake); }}
好好利用委托 、事件。
这样比的调用一对方法来的更好。至于好在哪里,程序员都懂。
调用方法如下
//有一间房子
House h = new House(); //猫大叫 h.cat.Cry(); Console.ReadKey();