编程程序实现委托,事件。
方法一:
static voidMain(string[] args)
{
Cat cat = new Cat();
Mouse mouse = new Mouse();
Master master = new Master();
cat.Calling += new EventHandler(mouse.Escape);
cat.Calling += new EventHandler(master.Wakened);
cat.Call();
Console.ReadLine();
}
}
public sealed class Cat//猫类
{public event EventHandler Calling;
public void Call()
{ Console.WriteLine("猫开始叫了……");
if(Calling!=null) //检查事件是否被注册
Calling(this,EventArgs.Empty);//调用事件注册的方法
}
}
public sealed class Mouse//老鼠类
{
public void Escape(object sender,EventArgs e)
{
Console.WriteLine("老鼠逃跑了...");
}
}
public sealed class Master //主人
{
public void Wakened(object sender,EventArgs e)
{
Console.WriteLine("主人惊醒了...");
}
//方法二:
//重新事件参数,添加我们想要的功能
public class CatEventArgs : EventArgs
{
//添加一个猫叫的原因的功能
public string reason { get; set; }
}
public class Cat
{
public string name { get; set; }
//定义一个猫叫的事件
public event EventHandler CatMao;
//猫叫了
public void Miao(string reson)
{
CatEventArgs cea = new CatEventArgs();
cea.reason = reson;
//执行事件
CatMao(this, cea);
}
}
class Program_Event
{
static void Main(string[] args)
{
Cat cat = new Cat();
cat.name = "白猫";
cat.CatMao += cat_CatMao;
//猫叫了,才能触发猫叫的事件
cat.Miao("白猫发现老鼠了");
Cat wcat = new Cat();
wcat.name = "老鼠";
wcat.CatMao += wcat_CatMao;
//老鼠逃了,才能触发猫叫的事件
wcat.Miao("");
Console.ReadLine();
}
//老鼠叫的事件
private static void wcat_CatMao(object sender, EventArgs e)
{
Console.WriteLine("老鼠看到了白猫");
Console.WriteLine("老鼠逃了");
}
//白猫叫的事件
private static void cat_CatMao(object sender, EventArgs e)
{
Cat cat = (Cat)sender;
CatEventArgs cea = (CatEventArgs)e;
Console.WriteLine("白猫叫了");
Console.WriteLine("白猫发现老鼠了");
}
}