今天一道面试题--猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒---C#程序实现

Dicky81 2006-02-22 04:21:02
猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒
要求:1。要有联动性,老鼠和主人的行为是被动的
2。考虑可扩展性,猫的叫声可能引起其他联动效应
欢迎大虾解答,谢谢
...全文
3130 82 打赏 收藏 转发到动态 举报
写回复
用AI写文章
82 条回复
切换为时间正序
请发表友善的回复…
发表回复
islkeng 2006-07-05
  • 打赏
  • 举报
回复
mark
soarheaven 2006-03-03
  • 打赏
  • 举报
回复
学习
valenhua 2006-03-03
  • 打赏
  • 举报
回复
经典经典
blueskygenius 2006-03-01
  • 打赏
  • 举报
回复
好暈................
活靶子哥哥 2006-02-25
  • 打赏
  • 举报
回复


public delegate void 猫叫EventHandler(object sender,猫叫EventArgs);
public class 猫叫EventArgs : EventArgs
{
private 叫声 猫叫声;
void 猫叫EventArgs(叫声 声音)
{
this.猫叫声 = 声音;
}
}
public class 猫
{
public event 猫叫EventHandler 猫叫;

public 叫()
{
if(猫叫 != null)
{
猫叫(this,new EventArgs(白猫的叫声));
}
}

}
public class 场景
{
[STAThread]
public static void Main(string[] args)
{
猫 白猫 = new 猫();

白猫.猫叫 = new 猫叫EventHandler (老鼠跑) + new 猫叫EventHandler (主任醒);

白猫.叫();
}
}




imdg 2006-02-25
  • 打赏
  • 举报
回复
cqlnet(无聊的修练)
-----------------
厉害!好!
l8394x 2006-02-25
  • 打赏
  • 举报
回复
学习当中。。。。。。。。。。。。
活靶子哥哥 2006-02-25
  • 打赏
  • 举报
回复
sorry
public void 叫()
JOYCE_WEI 2006-02-24
  • 打赏
  • 举报
回复
受益非浅,谢谢了
Kevin_jun 2006-02-24
  • 打赏
  • 举报
回复
学习......

cqlnet(无聊的修练) ( )
能不能再来个多线程?
帖出代码让我们再观摩下
javasam 2006-02-24
  • 打赏
  • 举报
回复
汗~~~~~~~~~~~
rxx 2006-02-24
  • 打赏
  • 举报
回复
mark一下
zhongkeruanjian 2006-02-24
  • 打赏
  • 举报
回复
cqlnet(无聊的修练) ( )

Good!
止戈而立 2006-02-24
  • 打赏
  • 举报
回复
今天天气真好。。
cqlnet 2006-02-24
  • 打赏
  • 举报
回复
using System;
using System.Collections;
namespace SceneA
{
public delegate void SceneEventHandler(object sender, CharEventArgs e);

public class CharEventArgs : EventArgs
{
public string Action;
public CharEventArgs(string Action)
{
this.Action = Action;
}
}

public class Animal
{
protected Hashtable EventList= new Hashtable();
protected Scene CurrentScene;
protected string Name;
public Animal(string Name,Scene SceneObj)
{
this.Name=Name;
this.CurrentScene=SceneObj;
SceneObj.AddListener(this);
}
public void AddEventListener(string e,SceneEventHandler Action)
{
EventList.Add(e,Action);
}
public void Trigger(string Action)
{
CurrentScene.PostMessage(this,Action);
}
public void Dispatch(Object Obj,CharEventArgs e)
{
Object fun;
if(EventList.Count==0)
{
// Console.WriteLine(this.Name+"说:没我啥事 你们继续");
}else if(null!=(fun=EventList[e.Action]))
((SceneEventHandler)fun)(Obj,e);
}
}
public class Cat:Animal
{
public Cat(string Name,Scene SceneObj):base(Name,SceneObj){}
}
public class Dog:Animal
{
public Dog(string Name,Scene SceneObj):base(Name,SceneObj){}
}
public class Mouse:Animal
{
public Mouse(string Name,Scene SceneObj):base(Name,SceneObj){
AddEventListener("喵",new SceneEventHandler(Escape));
}
public void Escape(object sender, CharEventArgs e)
{
if(sender.ToString()=="SceneA.Dog")
{
Console.WriteLine(sender.ToString()+e.Action+"→"+ this.Name+"说:这家伙是狗甭理它!");
return;
}
Console.WriteLine(sender.GetType().ToString()+e.Action+"→"+ this.Name+"说:快快逃呀");
}
}
public class Man:Animal
{
public Man(string Name,Scene SceneObj):base(Name,SceneObj){}
}
public class Scene
{
private event SceneEventHandler SceneEvent;

public void PostMessage(Animal Animal,string Action)
{
this.SceneEvent(Animal,new CharEventArgs(Action));
}
public void AddListener(Animal Animal)
{
this.SceneEvent += new SceneEventHandler(Animal.Dispatch);
}
public void ManWake(object sender, CharEventArgs e)
{
Console.WriteLine(sender.ToString()+e.Action+"→吵死啦!");
}

[STAThread]
static void Main(string[] args)
{
Scene MainScene = new Scene();

Cat CatObj = new Cat("汤姆",MainScene);
Mouse MouseJL = new Mouse("杰里",MainScene);
Mouse MouseJM = new Mouse("杰妹",MainScene);
Dog DogObj = new Dog("旺财",MainScene);

Man ManObj = new Man("小强",MainScene);
ManObj.AddEventListener("喵",new SceneEventHandler(MainScene.ManWake));

CatObj.Trigger("喵");
DogObj.Trigger("喵");

}
}
}



场景中可以任意添加角色,并各自定义要响应的事件,扩展性怎样?
  • 打赏
  • 举报
回复
故作高深
raulzzy 2006-02-24
  • 打赏
  • 举报
回复
好题,长见识
tonrew 2006-02-24
  • 打赏
  • 举报
回复
mark
Qqwwee_Com 2006-02-24
  • 打赏
  • 举报
回复
学习下。



====CSDN 小助手 V2.5 ====
CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
速度快;使用方便;提供源代码。
界面:http://blog.csdn.net/Qqwwee_Com/category/146601.aspx
下载:http://szlawbook.com/csdnv2

cqlnet 2006-02-24
  • 打赏
  • 举报
回复
你们的猫猫都好厉害,
都知道家里有多少条老鼠,
每增加一个老鼠都要到猫猫那里报道登记在册
然后猫每次叫的时候都要对每一只登记过的老鼠说:我来也!现在到你跑啦
加载更多回复(62)

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧