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


    ]V]HPS3~ODVQE8OEI25DG6X

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

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

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

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

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

  • 相关阅读:
    第二十章 用户管理(一)
    第十九章 Linux中常用字符的特殊含义
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
  • 原文地址:https://www.cnblogs.com/jixinyu12345/p/4872488.html
Copyright © 2020-2023  润新知