程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)

首先进行分析:
思路:
  先看下过程:猫叫->|人醒
            |老鼠跑
所以我们可以给猫写个事件,这个事件由猫叫来触发,而人和老鼠中的某个方法
人醒和老鼠跑这两个方法注册到猫这个事件上就行了

结果,猫叫-人醒、老鼠跑

//public delegate void CatCallEventHandler(object sender, EventArgs e);
/// <summary>
/// 猫类
/// </summary>
class Cat
{
//定义一个猫叫事件的委托
public delegate void CatCallEventHandler(object sender, EventArgs e);
//定义事件
public event CatCallEventHandler CatCall;
protected virtual void OnCatCall(EventArgs e)
{
CatCallEventHandler Handler = CatCall;
if (Handler != null)
{
Handler(this, e);
}
}
/// <summary>
/// 触发事件的方法
/// </summary>
public void cCall()
{
Console.WriteLine("猫叫了!");
OnCatCall(new EventArgs());
}
/// <summary>
/// 委托方法
/// </summary>
/// <param name="Handler"></param>
/// <param name="sender"></param>
/// <param name="e"></param>
public void cCall(CatCallEventHandler[] Handler, object sender, EventArgs e)
{
Console.WriteLine("猫叫了!");
foreach (CatCallEventHandler h in Handler)
{
h(sender, e);
}
}

}
/// <summary>
/// 人类
/// </summary>
public class Man
{
private string _Name;
public Man() { }
public Man(string Name)
{
_Name = Name;
}
public string Name
{
get { return _Name; }
set { _Name = value; }
}
public void ManAwake(object sender, EventArgs e)
{
Console.WriteLine("Man" + _Name + "醒了!");
}
}
/// <summary>
/// 老鼠类
/// </summary>
public class Mouse
{
private string _Name;
public Mouse() { }
public Mouse(string Name)
{
_Name = Name;
}
public string Name
{
get { return _Name; }
set { _Name = value; }
}
public void MouseRunAway(object sender, EventArgs e)
{
Console.WriteLine("Mouse" + _Name + "跑了!");
}
}
public class Test
{
//static void Main(string[] args)
//{
// Cat c = new Cat();
// Man m = new Man("张三");
// Man x = new Man("小子");
// Mouse mo = new Mouse("小白");

// Cat.CatCallEventHandler[] Hander = { m.ManAwake, x.ManAwake, mo.MouseRunAway };

// //c.CatCall += new Cat.CatCallEventHandler(m.ManAwake);
// //c.CatCall += new Cat.CatCallEventHandler(mo.MouseRunAway);
// //c.CatCall += new Cat.CatCallEventHandler(x.ManAwake);
// //c.cCall();
// c.cCall(Hander, new object(), new EventArgs());
//}
}

转载别人的做法,纯粹学习你分析问题的思路,没别的意思
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值