广州.NET培训
达内广州.NET培训中心

18589266248

热门课程

c#经典面试题—猫叫,主人醒,老鼠跑(事件的处理)

  • 时间:2017-01-31 23:52
  • 发布:广州.NET培训
  • 来源:达内新闻

实现方法:分3个类实现,分别为猫类,老鼠类,主人类。

猫类:定义一个猫叫事件;

老鼠类:订阅猫叫事件,在猫发出叫声这个事件后,老鼠逃跑;

主人类:类似于老鼠类,在猫发出叫声这个事件后,主人醒来;

猫类实现如下:

实现方法:分3个类实现,分别为猫类,老鼠类,主人类。

猫类:定义一个猫叫事件;

老鼠类:订阅猫叫事件,在猫发出叫声这个事件后,老鼠逃跑;

主人类:类似于老鼠类,在猫发出叫声这个事件后,主人醒来;

猫类实现如下:

[csharp] view plain copy

using System;

using System.Collections.Generic;

using System.Text;

using System.Data;

namespace CarCry

{

///

/// 猫类的定义

///

public class Cat

{

//猫名

private string _name;

//猫叫事件

public event EventHandler CatCryEvent;

///

/// 构造函数

///

/// 名字参数

public Cat(string name)

{

_name = name;

}

///

/// 促发猫叫的事件

///

public void CatCry()

{

CatCryEventArgs args = new CatCryEventArgs(_name);

Console.WriteLine(args);

CatCryEvent(this,args);

}

}

///

/// 猫叫事件参数

///

public class CatCryEventArgs:EventArgs

{

//发出叫声的猫的名字

private string _catname;

///

/// 构造函数

///

public CatCryEventArgs(string catname):base()

{

_catname = catname;

}

///

/// 输出参数内容

///

public override string ToString()

{

return "猫 "+ _catname + " 叫了";

}

}

}

老鼠类实现如下:

using System;

using System.Collections.Generic;

using System.Text;

namespace CarCry

{

public class Mouse

{

//老鼠名字

private string _name;

///

/// 构造函数

///

/// 老鼠的名字

/// 发出叫声的猫

public Mouse(string name,Cat cat)

{

_name = name;

cat.CatCryEvent += CatCryHandle;//订阅猫叫事件

}

///

/// 猫叫事件处理

///

///

///

private void CatCryHandle(object sender,CatCryEventArgs args)

{

Run();

}

///

/// 逃跑方法

///

private void Run()

{

Console.WriteLine("老鼠 " + _name + " 逃跑了");

}

}

}

主人类实现如下:

using System;

using System.Collections.Generic;

using System.Text;

namespace CarCry

{

public class Master

{

//主人名字

private string _name;

///

/// 构造函数,订阅事件

///

/// 主人名字

/// 猫

public Master(string name,Cat cat)

{

_name = name;

cat.CatCryEvent += CatCryHandler;//订阅猫叫事件

}

///

/// 猫叫事件处理

///

///

/// 猫叫事件

private void CatCryHandler(object sender,CatCryEventArgs args)

{

WakeUp();

}

///

/// 主人醒了事件

///

private void WakeUp()

{

Console.WriteLine("主人 "+_name+" 醒了") ;

}

}

}

主函数的调用如下:

using System;

using System.Collections.Generic;

using System.Text;

namespace CarCry

{

class MainClass

{

static void Main(string[] args)

{

Console.WriteLine("开始模拟");

Cat cat = new Cat("Tom");

Mouse mouse1 = new Mouse("Jack", cat);

Mouse mouse2 = new Mouse("jackson",cat);

Master master = new Master("Tao", cat);

Master master2 = new Master("Hong",cat);

cat.CatCry();

Console.ReadLine();

}

}

}

上一篇:类与结构的差别:嵌套类型
下一篇:C#属性

达内.net编程班:2017年中国信息流广告汇报

达内.net编程班:进程内存模型

广州达内:正确运用异步编程技术的技巧

广州达内老师分享.Net的性能

选择城市和中心
贵州省

广西省

海南省