开课中国  |  [Investor Relations]   |  官方微博

广州.NET培训中心

美国上市公司 · 亿元级外企.NET培训企业

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

    发布:广州.NET培训      来源:达内新闻      时间:2016-12-14        

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

  • 实现方法:分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#属性

2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56