关于一个简单面试题(。net)

it2022-05-09  149

猫大叫一声,主人被惊醒,所有的小老鼠开始逃窜。

期初想到的是事件调用方法。

在猫叫的事件中调用一对方法就可以了。

但是,当事件很多的时候 难保大家写着写着就忘记了。

总不能有 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();

转载于:https://www.cnblogs.com/jixinyu12345/p/4872488.html


最新回复(0)