事件

来源:互联网 发布:囚徒健身软件 编辑:程序博客网 时间:2024/04/28 18:47

C#算法一道面试题:程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。

以下是我的答案,希望各位朋友发表自己的看法:

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

namespace ConsoleApplication12
{
    delegate void Test();//事件的签名以委托的形式定义,并定义在类的外面
    class Program
    {        
        static void Main(string[] args)
        {
            Cat cat = new Cat();
            Mouse m = new Mouse(cat);
            Person p = new Person(cat);
            while(true)
            {
                Console.WriteLine("按Enter键场景开始");
                Console.ReadLine();
                cat.catJiao();
                Console.ReadLine();
            }            
        }        
    }
    class Cat //监听类
    {
        public event Test test;//不可声明在方法中,且一定要将访问修饰符定为公共的,否则其它类难以访问
        public void catJiao()
        {
            Console.WriteLine("猫开始叫");
            if (test != null)//判断事件对象是否为空
            {
                test();//触发事件
            }
        }
    }
    class Mouse
    {
        public Mouse(Cat c)//以监听类为参数
        {
            c.test+=new Test(mouseRun);//订阅事件,只需要写方法名
        }
        public void mouseRun()//事件处理
        {
            Thread.Sleep(500);
            Console.WriteLine("老鼠开始逃跑");
        }
    }
    class Person
    {
        public Person(Cat c)//以监听类为参数
        {
            c.test+=new Test(personWake);//订阅事件
        }
        public void personWake()//事件处理
        {
            Thread.Sleep(1000);
            Console.WriteLine("主人醒");
        }
    }
}
原创粉丝点击