首先进行分析:
思路:
先看下过程:猫叫->|人醒
|老鼠跑
所以我们可以给猫写个事件,这个事件由猫叫来触发,而人和老鼠中的某个方法
人醒和老鼠跑这两个方法注册到猫这个事件上就行了
结果,猫叫-人醒、老鼠跑
转载别人的做法,纯粹学习你分析问题的思路,没别的意思
思路:
先看下过程:猫叫->|人醒
|老鼠跑
所以我们可以给猫写个事件,这个事件由猫叫来触发,而人和老鼠中的某个方法
人醒和老鼠跑这两个方法注册到猫这个事件上就行了
结果,猫叫-人醒、老鼠跑
//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());
//}
}
转载别人的做法,纯粹学习你分析问题的思路,没别的意思