文档章节

事件 委托 老鼠 猫 主人

rhythmk
 rhythmk
发布于 2014/08/16 16:36
字数 404
阅读 0
收藏 0
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TheStoryOfCat
{
class Program
{
static void Main(string[] args)
{
Cat cat = new Cat() { Name = "Petal" };
Mouse mouse = new Mouse() { Name = "Jack" };
cat.CatMonitorEvent += cat.Move;
cat.CatMonitorEvent += mouse.Move;
//主人
Master master = new Master(cat) { Name="Old Boss"};
cat.Run();
Console.ReadKey();
}
}

public delegate void MonitorHandle();
public class Cat
{
public string Name;

public event MonitorHandle CatMonitorEvent;

public Cat() {
}

public void Move()
{
Console.WriteLine("Cat:" +this.Name +"Moving");

}
public void Run()
{
if (CatMonitorEvent != null)
CatMonitorEvent();
}
}
public class Mouse
{
public string Name;

public Mouse() {
}

public void Move()
{
Console.WriteLine("Mouse: "+this.Name + "Moving");
}
}

public class Master
{
public string Name;

/// <summary>
/// 注入
/// </summary>
/// <param name="cat"></param>
public Master(Cat cat)
{
if (cat != null)
cat.CatMonitorEvent += Move;
}
public void Move()
{
Console.WriteLine("Master: " + this.Name + "Moving");
}
}
}

写法二:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace TheStoryOfCat
{

class Program
{
static void Main(string[] args)
{
Cat cat = new Cat() { Name = "Petal" };
Mouse mouse = new Mouse() { Name = "Jack" };
cat.CatMonitorEvent += cat.Move;

cat.CatMonitorEvent += mouse.Move;
//主人
Master master = new Master(cat) { Name="Old Boss"};
cat.Run(new MonitorEventArgs(20));
Console.WriteLine("----------华丽分割线-------------");
cat.Run(new MonitorEventArgs(70));
Console.ReadKey();
}
}
public class MonitorEventArgs : EventArgs
{
public int Sound;
public MonitorEventArgs(int _Sound) {
this.Sound = _Sound;
}
}

public delegate void MonitorHandle(object obj,MonitorEventArgs arg);
/// <summary>
///
/// </summary>
public class Cat
{
public string Name;

public event MonitorHandle CatMonitorEvent;

public Cat() {
}

public void Move(object obj, MonitorEventArgs arg)
{
Console.WriteLine( " {0} 当前叫声{1}分贝",this.Name,arg.Sound);
}
public virtual void Run(MonitorEventArgs arg )
{
if (CatMonitorEvent != null)
CatMonitorEvent(this, arg);
}
}
/// <summary>
/// 老鼠
/// </summary>
public class Mouse
{
public string Name;

public Mouse() {
}
/// <summary>
/// 猫叫声如果低于50分贝 则不预计较
/// </summary>
/// <param name="obj"></param>
/// <param name="arg"></param>
public void Move(object obj, MonitorEventArgs arg)
{
if (arg == null)
return;
string result = "不预计较";
if (arg.Sound > 50)
result = "快跑";
Console.WriteLine(" {0}听见,猫当前叫声{1}分贝,{2}", this.Name, arg.Sound,result);
}
}
/// <summary>
/// 主人
/// </summary>
public class Master
{
public string Name;

/// <summary>
/// 注入
/// </summary>
/// <param name="cat"></param>
public Master(Cat cat)
{
if (cat != null)
cat.CatMonitorEvent += Move;
}
public void Move(object obj, MonitorEventArgs arg)
{
if (arg == null)
return;
string result = "猫中气不足";
if (arg.Sound > 50)
result = "猫状态不错";
Console.WriteLine(" 主人{0},听见猫当前叫声{1}分贝,{2}", this.Name, arg.Sound, result);
}
}
}




© 著作权归作者所有

rhythmk
粉丝 1
博文 62
码字总数 40987
作品 0
广州
私信 提问
猫主子总往家里带老鼠?那就用深度学习打造一个「猫门」吧

猫主子想带老鼠进门?休想,我有人工智能武器。 机器之心报道,作者:路、李亚洲。 可爱的猫主子在安享主人的爱护时,也常常想「回报」主人,比如送点小礼物啦~然而猫主子的小礼物一般人可是...

06/18
0
0
Java基础进阶 第一天 面向对象

今日任务: 1、理解面向过程和面向对象的概念以及区别; 2、掌握如何在需求中提取对象,会使用Java代码描述提取的对象; 3、了解对象在内存中的存在状态 4、理解类和对象的区别 5、掌握局部变...

Villain丶Cc
2018/05/30
0
0
一个设计模式的题目,编程

说有三个对象,猫,老鼠,人,猫看见了老鼠,老鼠吓跑了,在过程中把人吵醒, 在编程过程中注意新的对象的参与。 不会,求解释

王洪旭
2014/07/09
484
4
菜鸟的进击——C语言实现老鼠走迷宫

老鼠走迷宫,一只实验室的小老鼠被用来做迷宫智力实验。科学家在迷宫的一角放上一块奶酪,小老鼠要在最快时间内找到奶酪。 老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙...

柳猫
2018/06/01
0
0
Linux 桌面 Xfce 被曝神级“Bug”,会破坏用户显示器

一位用户向 Xfce 项目递交了一个 Bug 报告,标题是“The default desktop startup screen causes damage to monitor!” Xfce 是类 UNIX 操作系统上的轻量级桌面环境,遵循 UNIX 的模块化和复...

王练
2017/03/25
9.1K
62

没有更多内容

加载失败,请刷新页面

加载更多

PostgreSQL 11.3 locking

rudi
今天
5
0
Mybatis Plus sql注入器

一、继承AbstractMethod /** * @author beth * @data 2019-10-23 20:39 */public class DeleteAllMethod extends AbstractMethod { @Override public MappedStatement injectMap......

一个yuanbeth
今天
10
1
一次写shell脚本的经历记录——特殊字符惹的祸

本文首发于微信公众号“我的小碗汤”,扫码文末二维码即可关注,欢迎一起交流! redis在容器化的过程中,涉及到纵向扩pod实例cpu、内存以及redis实例的maxmemory值,statefulset管理的pod需要...

码农实战
今天
4
0
为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?

之前在阅读《阿里巴巴Java开发手册》时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符串拼接的效率...

武培轩
今天
8
0
队列-链式(c/c++实现)

队列是在线性表功能稍作修改形成的,在生活中排队是不能插队的吧,先排队先得到对待,慢来得排在最后面,这样来就形成了”先进先出“的队列。作用就是通过伟大的程序员来实现算法解决现实生活...

白客C
今天
81
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部