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

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

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

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

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

关于一个简单面试题(。net)的更多相关文章

  1. 一个简单的java僵局演示示例

    在实际编程,为了避免死锁情况,但是,让你写一个有用的程序死锁似几乎不要太简单(种面试题),下面是一个简单的死锁样例. 线程的同步化可能会造成死锁,死锁发生在两个线程相互持有对方正在等待的东西(实际是两 ...

  2. 一个简单的Java死锁示例(转)

    在实际编程中,要尽量避免出现死锁的情况,但是让你故意写一个死锁的程序时似乎也不太简单(有公司会出这样的面试题),以下是一个简单的死锁例子,程序说明都写着类的注释里了,有点罗嗦,但是应该也还是表述清楚了 ...

  3. 一个简单需求:HashMap实现相同key存入数据后不被覆盖

    做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 看似是一个简单的问题,其实里面包含很多的东西! 需求: 实现一个在HashMap中存入(任意类型)相同的key值后,key ...

  4. 39条常见的Linux系统简单面试题

    39条常见的Linux系统简单面试题 本文主要分享39条常见的Linux系统简单面试题,其中包括如何看当前Linux系统有几颗物理CPU和每颗CPU的核数.如何实时查看网卡流量为多少等等,希望对你有所 ...

  5. python简单面试题

    在这个即将进入金9银10的跳槽季节的时候,肯定需要一波面试题了,安静总结了一些经常遇到的python面试题,让我们一起撸起来. python面试题 1.求出1-100之间的和 # coidng:utf ...

  6. Java中的策略模式,完成一个简单地购物车,两种付款策略实例教程

    策略模式是一种行为模式.用于某一个具体的项目有多个可供选择的算法策略,客户端在其运行时根据不同需求决定使用某一具体算法策略. 策略模式也被称作政策模式.实现过程为,首先定义不同的算法策略,然后客户端把 ...

  7. 一个简单的例子让你很轻松地明白JavaScript中apply、call、bind三者的用法及区别

    JavaScript中apply.call.bind三者的用法及区别 引言 正文 一.apply.call.bind的共同用法 二. apply 三. call 四. bind 五.其他应用场景 六. ...

  8. 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo

    简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...

  9. 哪种缓存效果高?开源一个简单的缓存组件j2cache

    背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...

随机推荐

  1. UDP编程

    一: socket编程中的几种地址 Socket编程会遇到三种地址, 都是定义的结构体(struct): Struct in_addr     {         Unsigned int s_add ...

  2. Android开发学习之LauncherActivity开发启动的列表

    Android开发学习之LauncherActivity开发启动的列表 创建项目:OtherActivity 项目运行结果:   建立主Activity:OtherActivity.java [jav ...

  3. 关于android各种双卡手机获取imei,imsi的处理(mtk,展讯,高通等)

    目前国内对于双卡智能手机的需求还是很大的,各种复杂的业务会涉及到双卡模块:而android标准的api又不提供对双卡的支持.导致国内双卡模块标准混乱,各个厂商各玩各的.目前我知道的双卡解决方案就有:m ...

  4. (转载)关于ArrayList的5道面试题

    我以面试官的身份参加过很多Java的面试,以下是五个比较有技巧的问题,我发现有些初级到中级的Java研发人员在这些问题上没有完全弄明白,似懂非懂.所以我写了一篇相关的文章,帮助初级Java研发人员弄清 ...

  5. Android(java)学习笔记196:Android中Menu的使用(静态和动态)

    1.使用xml定义Menu(静态方法) 菜单资源文件必须放在res/menu目录中.菜单资源文件必须使用<menu>标签作为根节点.除了<menu>标签外,还有另外两个标签用于 ...

  6. iOS UIKit:CollectionView之设计 (1)

    collection view(UICollectionView对象)使用灵活和可扩展的布局来描述有序的数据项,其一般情况下以网格的形式来展示内容,但并非一定如此. 1 基础 为了将数据展示在屏幕中, ...

  7. iOS开发中常用的手势---边缘手势

    说明:以下方法是开发中使用的方法,有什么不对的或者好的方法,请多多指教! 此处的边缘手势是用来控制左侧抽屉视图的弹出以及收回. 添加手势 : 页面上有多个手势时需要遵循 UIGestureRecogn ...

  8. 用Javascript评估用户输入密码的强度

      <!-- 密码已经是我们生活工作中必不可少的工具,但一个不安全的密码有又有可能会给我们造成不必要的损失.作为网站设计者,如果我们在网页中能对用户输入的密码进行安全评估,并显示出相应的提示信息 ...

  9. IE浏览器div错乱问题

    这个问题属于各浏览器的兼容问题,有时候在其他浏览器中,html页面布局都是正常显示,唯独IE浏览器的div块布局错乱了,可能是html文件上面的报头标准出现错误. 就是一段报头,告诉浏览器,你的文档以 ...

  10. SQL Server中Id自增列的最大Id是多少

    什么是自增列 在SQL Server中可以将Id列设为自增.即无需为Id指定值,由SQL Server自动给该列赋值,每新增一列Id的值加一,初始值为1. 需要注意的是即使将原先添加的所有数据都删除, ...