当前位置:编程学习 > C#/ASP.NET >>

一个面试的问题,请高手帮助解答下

设计一个程序,有一只猫,当它叫时所有的老鼠都逃跑,主人被惊醒.
要求:
要考:虑到可扩展性,猫叫时产生的其他连锁反映.
     用C#解决此问题 --------------------编程问答-------------------- 定义委托事件,猫叫的时候调用委托,激发事件,在各个老鼠的程序中都添加个响应的事件,在事件方法中写具体内容。 --------------------编程问答-------------------- 虽然考的是Delegate 但这种方式出题实再让人无语。 --------------------编程问答-------------------- 这个问题真让人汗颜 --------------------编程问答-------------------- 一般面试或者考试卷,十有易做图会考Delegate  --------------------编程问答--------------------
引用 1 楼 lyq198345 的回复:
定义委托事件,猫叫的时候调用委托,激发事件,在各个老鼠的程序中都添加个响应的事件,在事件方法中写具体内容。



  说的是,再说这个问题面试也太多了吧,,,,问下他就不能换个问题..?? --------------------编程问答-------------------- 写了个大概的例子

using System;

class 例子
{
    static void Main(string[] args)
    {
        Cat c = new Cat();
        Owner o = new Owner();
        Rat r = new Rat();
        c.Handler += new CatShoutingEventHandler(o.OnCatShouting);
        c.Handler += new CatShoutingEventHandler(r.OnCatShouting);
        c.Shout();
        Console.Read();
    }
}

public delegate void CatShoutingEventHandler();

class Cat
{
    public CatShoutingEventHandler Handler;

    public void Shout()
    {
        Handler();
    }
}

class Owner
{
    public void OnCatShouting()
    {
        Console.WriteLine("死猫不要叫了");
    }
}

class Rat
{
    public void OnCatShouting()
    {
        Console.WriteLine("猫来了,我3");
    }
} --------------------编程问答-------------------- 搜索一下,网上大把的。 --------------------编程问答-------------------- 这个问题有意思,^_^
说说我第想到的第一个思路,定义一个接口,里面一个方法,对应于猫叫的时候 ,
定义多个对象(老鼠,人,etc...),都完成那个接口
然后在猫这个对象上添加受影响的对象,最后猫叫的时候更新各个对象的状态...

猫相当于观察者,呵呵~~
--------------------编程问答-------------------- ....我理解错了 以为是一个名为猫的程序打开后 关闭所有鼠程序 然后打开主人程序 --------------------编程问答-------------------- namespace test
{
    public delegate void Call();
    public class cat
    {
        public event Call OnCall;
        public Cat()
        {
           Console.Write("Cat Call.....");
        }
        public void virtual Call()
        {
            if(OnCall;!=null)
            { 
              this.OnCall;();
            }
        }
     
    }
    public class Master
    {
        public Master(Cat cat)
        {
            cat.OnCall +=new Call(Master_WakeUp);
        }
        public void Master_WakeUp()
        {
          Consloe.Write("Master WakeUp....");
        }
    }
    public class Mouse
    {
        public Mouse(Cat cat)
        {
           cat.OnCall +=new Call(Mouse_Run);
        }
        public void Mouse_Run()
        {
           Console.Write("Mouse Run...");
        }
    }
    
} --------------------编程问答-------------------- 晕死,公司笔试能不能有点新鲜的东西靠............................
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,