CatShoutEventArgs 类:猫叫事件参数类,目前的属性只有猫的name

    //EventArgs是包含事件数据的类的父类,作用是事件触发时传递数据class CatShoutEventArgs : EventArgs{private string name;public string Name{get{return name;}set { name = value; } }}

Cat类:猫一叫,老鼠就跑

    class Cat{private string name;public Cat(string name){this.name = name;}//sender:发送通知让老鼠快跑的那个对象,其实还是老猫//agrs:所有接收者需要附件的信息,这里是老猫的名字public delegate void CatShoutEventHandler(object sender, CatShoutEventArgs args);public event CatShoutEventHandler CatShout;public void Shout(){Console.WriteLine("喵,我是{0}", name);if (CatShout !=null){//声明并实例化一个CatShoutEventArgs对象eCatShoutEventArgs e = new CatShoutEventArgs();//赋值老猫的名字e.Name = this.name;//事件触发时,通知所有登记过的对象,并将发送通知的自己(老猫的名字),和老鼠Run需要的数据传递过去(这里需要的还是老猫的名字)CatShout(this, e);}}}

Mouse类:边跑边喊 “老猫xx来了,xx(自己的名字)快跑!”

    class Mouse{private string name;public Mouse(string name){this.name=name;}//object sender:通知者的对象(老猫的名字)//CatShoutEventArgs args:所有接收者需要附件的信息(老鼠1和老鼠2的方法Run都需要老猫的名字,所以这里是两遍老猫的名字)public void Run(object sender,CatShoutEventArgs args){Console.WriteLine("老猫{0}来了,{1}快跑",args.Name ,name);}}

客户端:

        static void Main(string[] args){Cat cat = new Cat("Tom");Mouse mouse1 = new Mouse("Jerry");Mouse mouse2 = new Mouse("Jack");//将老鼠的Run方法通过实例化了的委托Cat.CatShoutEventHandler,登记到猫的实践CatShout当中。//委托是一个类,可以实例化,委托是对函数的封装,实例成了一个具体的函数cat.CatShout += new Cat.CatShoutEventHandler(mouse1 .Run );cat.CatShout += new Cat.CatShoutEventHandler(mouse2 .Run );//Shout();方法里包含了对事件CatShout的操作,这里就触发了事件CatShout,紧接着方法Shout()就会委托Cat.CatShoutEventHandler通知老鼠的方法Run跟着运行。cat.Shout();}

委托和事件——老鼠跑和猫叫相关推荐

  1. 观察者模式和委托实现 - 老鼠跑,猫叫,人醒

    老鼠跑,猫叫,人醒是典型的事件联动,解决此种情形,可以利用观察者模式或者事件委托来实现.利用设计模式时要考虑耦合,但利用事件委托的话,就不需要了.因为用委托的话,理解比较容易,这里没有单写,而是将委托 ...

  2. Java猫叫老鼠跑人惊醒_面试题:猫叫、老鼠跑、人醒的一点看法

    这些天一直在面试中,做着不同的面试题,唉,悲催 上周做的一道面试题今天正好出现在园里的首页,看了一下这位同学的实现,基本上方向是对的,就是代码上细节没有注意,有一些错误,这里我就写一下我的理解 --- ...

  3. Java猫叫老鼠跑人惊醒_关于猫叫、老鼠逃跑、人被惊醒的程序设计

    题目是这样的:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒. 要求: 1.要有联动性,老鼠和人的行为是被动的 2.考虑可扩展行,猫叫声可能会引起其他联动效应 看到这个程序设计题目,我的第一反应是用事件 ...

  4. 一道事件委托面试题 - 猫叫老鼠跑主人醒

    /* 道事件委托面试题 - 猫叫老鼠跑主人醒 */using System;namespace CatCry {class MainClass{static void Main(string[] ar ...

  5. 猫叫人醒老鼠跑 C#的委托及事件

    昨天进行了一下培训,讲解了一下委托跟事件的应用,说实话这个东西听起来还是一头雾水,虽然学会怎么用,但是还没搞明白需要在什么时候用到这个,后来我们经理给我举了个例子,让我做一个经典的委托和事件的例子,就 ...

  6. 事件模拟场景:猫叫-老鼠逃跑 主人惊醒

    这是一个典型的观察者模式的应用场景,事件的发源在于猫叫这个动作,在猫叫之后,老鼠开始逃跑,而主人则会从睡梦中惊醒.可以发现,主人和老鼠这两个类型的动作相互之间没有联系,但都是由猫叫这一事件触发的. 设 ...

  7. Java猫叫老鼠跑人惊醒_用代码表示如下情景:猫叫、老鼠逃跑、主人惊醒

    ### 1. 定义猫类型,并且该类型负责维护猫叫事件 *Cat.cs* ```csharp using System; namespace CatCry { /// /// 猫类型,维护猫叫事件 // ...

  8. .net学习之委托和事件

    1.什么是委托 通俗的说:委托就是一个能够存储符合某种格式(方法签名)的方法的指针的容器 上传图片: 2.委托语法 准备一个方法:string Hello(string userName){} str ...

  9. 工作十余年,还是一直被问 委托和事件 有什么区别? 真是够了

    一:背景 1. 讲故事 前几天公司一个妹子问我,事件和委托有什么区别?先由衷感叹一下,编码十余年,年轻的时候常被面试官问起,现在年长了,却被后辈们时常问候,看样子逃离编码生涯之前是跑不掉了,不过奇怪的 ...

最新文章

  1. 让你的网站提速:图片优化网站推荐
  2. tomcat的三种部署方式
  3. Spring REST:异常处理卷。 2
  4. 项目遇到OpenSessionInViewFilter的默认sessionFactoryBeanName的问题
  5. VBA实战技巧精粹010:如何快速选定工作表及Option Base 1
  6. 淘宝旺旺代码生成页面
  7. Python 各种画图
  8. 阿里巴巴数据中台实践
  9. 微信公众号获取用户地理位置
  10. 蓝桥杯试题 入门训练 圆的面积
  11. 8255并行接口与交通灯控制
  12. 一步步教你使用云端服务器yeelink远程监控
  13. google真的很简单的
  14. 概率问题的求解 —— 样本空间
  15. linux usleep占用cpu,[RK_2014_0918]linux下,测试usleep函数对CPU占用率的影响
  16. 远程控制android盒子,实现远程控制监控安卓手机的向日葵UUPro使用评测,淘汰的安卓手机可以派上用场了...
  17. Linux —— 线程安全
  18. jflow部分代码重构
  19. 关于请求被挂起页面加载缓慢问题的追查
  20. cpu缓冲区大小怎么设置_linux中cpu、内存、磁盘使用情况检查及处理

热门文章

  1. linux系统日志文件夹加密,linux系统环境下,对文件进行加密
  2. DEDECMS后台无法登陆并跳转回登陆界面的解决方法
  3. 无法安装服务“VMware Authorization Service” ,请确保您有足够的权限安装系统,如何解决?
  4. 身份证复印件安全使用攻略
  5. Cadences NC属性
  6. 前端开源项目周报1226
  7. Android App 架构图
  8. HP DeskJet 1112与树莓派结合为无线打印机
  9. Linux网络编程之sockaddr与sockaddr_in,sockaddr_un结构体详细讲解
  10. PostgreSQL处理jsonb中的arrays of array 类型