关于一个简单面试题(。net)
猫大叫一声,主人被惊醒,所有的小老鼠开始逃窜。
期初想到的是事件调用方法。
在猫叫的事件中调用一对方法就可以了。
但是,当事件很多的时候 难保大家写着写着就忘记了。
总不能有 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)的更多相关文章
- 一个简单的java僵局演示示例
在实际编程,为了避免死锁情况,但是,让你写一个有用的程序死锁似几乎不要太简单(种面试题),下面是一个简单的死锁样例. 线程的同步化可能会造成死锁,死锁发生在两个线程相互持有对方正在等待的东西(实际是两 ...
- 一个简单的Java死锁示例(转)
在实际编程中,要尽量避免出现死锁的情况,但是让你故意写一个死锁的程序时似乎也不太简单(有公司会出这样的面试题),以下是一个简单的死锁例子,程序说明都写着类的注释里了,有点罗嗦,但是应该也还是表述清楚了 ...
- 一个简单需求:HashMap实现相同key存入数据后不被覆盖
做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 看似是一个简单的问题,其实里面包含很多的东西! 需求: 实现一个在HashMap中存入(任意类型)相同的key值后,key ...
- 39条常见的Linux系统简单面试题
39条常见的Linux系统简单面试题 本文主要分享39条常见的Linux系统简单面试题,其中包括如何看当前Linux系统有几颗物理CPU和每颗CPU的核数.如何实时查看网卡流量为多少等等,希望对你有所 ...
- python简单面试题
在这个即将进入金9银10的跳槽季节的时候,肯定需要一波面试题了,安静总结了一些经常遇到的python面试题,让我们一起撸起来. python面试题 1.求出1-100之间的和 # coidng:utf ...
- Java中的策略模式,完成一个简单地购物车,两种付款策略实例教程
策略模式是一种行为模式.用于某一个具体的项目有多个可供选择的算法策略,客户端在其运行时根据不同需求决定使用某一具体算法策略. 策略模式也被称作政策模式.实现过程为,首先定义不同的算法策略,然后客户端把 ...
- 一个简单的例子让你很轻松地明白JavaScript中apply、call、bind三者的用法及区别
JavaScript中apply.call.bind三者的用法及区别 引言 正文 一.apply.call.bind的共同用法 二. apply 三. call 四. bind 五.其他应用场景 六. ...
- 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo
简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...
- 哪种缓存效果高?开源一个简单的缓存组件j2cache
背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...
随机推荐
- JavaScript效果之选项卡
拼了命学习js,想把学到的Javascript效果,可以记在博客里,在记录过程中,加深理解. gogogo,第一个效果,选项卡. 一.选项卡效果的实现思路 选项卡效果的应用很广泛,几乎所有的网站都会用 ...
- Android APK反编译具体解释(附图)
这段时间在学Android应用开发,在想既然是用Java开发的应该非常好反编译从而得到源码吧,google了一下,确实非常easy,下面是我的实践过程. 在此郑重声明,贴出来的目的不是为了去破解人家的 ...
- park、unpark、ord 函数使用方法(转)
park,unpark,ord这3个函数,在我们工作中,用到它们的估计不多. 我在最近一个工作中,因为通讯需要用到二进制流,然后接口用php接收.当时在处理时候,查阅不少资料.因为它们使用确实比较少, ...
- Windows下Memcached在.Net程序中的实际运用(从Memcached客户端Enyim的库的编译到实际项目运用)
1.一点基础概念 2.获取EnyimMemcached客户端的源代码并编译出动态库 3.Memcached的服务器安装(windows server) 4.在web项目中实战 一.基础概念 memca ...
- 网络学习笔记----01--pathping跟踪数据包路径
操作系统win7 Pathping主要用于提供有关在来源和目标之间的中间跃点处的网络滞后和网络丢失的信息. Pathping将多个回显请求消息发送到来源和目标之间的各个路由器一段时间,然后根据各个路由 ...
- 剖析@weakify 和 @strongify
前言 使用RAC的时候我们常会看到这两个宏@weakify(self).@strongify(self),用来防止使用block时出现引用闭环. 今天看YYKit的时候,看到里面也写了类似的宏,还是来 ...
- xhEditor与Java结合使用
xhEditor是一个轻量级的html编辑器,使用它可以非常方便的编辑图文内容,然而官方文档中只有php的演示,没有Java版的,最近两天参考网上各种各样的文档,琢磨了一下用法,现已可以正常运行,现在 ...
- ASP.NET分页存储过程,解决搜索时丢失条件信息
存储过程: -- ============================================= -- Author: -- Create date: -- Description: 分页 ...
- spring 3.1.4 升 4.0.2
来自为知笔记(Wiz)
- 导出excel的简单方法
excel的操作,最常用的就是导出和导入,废话不多说上代码. 本例使用NPOI实现的,不喜勿喷哈.... /// <summary> /// 导出Excel /// </summar ...