using
System;
/**/ /*
* 一个C# 事件的简单例子
* 功能:当起床铃声响起,就引发学生起床/厨师做早餐两个事件
* 设计很简单,目的是说明C# 中事件的含义
*/
// 定义一个委托
public delegate void DoSomething();
// 产生事件的类
public class Ring
... {
// 声明一个委托事件
public event DoSomething doIt;
// 构造函数
public Ring()
...{
}
// 定义一个方法,即"响铃" 引发一个事件
public void RaiseEvent()
...{
Console.WriteLine("铃声响了.......");
// 通知 学生类,厨师类,该起床的起床,该做早餐的做早餐
if (null != doIt)
...{
doIt(); // 如果有注册的对象,才调用它们的方法
}
}
}
// 学生类( 处理事件类一)
public class HandleEventOfStudents
... {
// 默认构造函数
public HandleEventOfStudents()
...{
}
// 当听到起床铃响起,学生起床(学生太累了,想睡个安稳觉,它告诉“铃声类” :“我好好睡觉,时间到了,你再叫我起床”)
//学生把起床事件登记[委托]到铃声类,让铃声类来通知他起床,自己只管好好睡觉
public void GetUp()
...{
Console.WriteLine("[学生]:听到起床铃声响了,起床了。");
}
}
// 校园厨师类(处理事件类二)
public class HandleEventOfChefs
... {
// 默认构造函数
public HandleEventOfChefs()
...{
}
// 当听到起床铃响起, 应该准备给学生做早餐了(当然厨师也可能能是早就起床了)
// 厨师就把为学生做早餐的事情登记到[委托]到铃声类,让铃声来通知他什么时候做早饭,免得做早了(免得做早了,早餐凉了,做晚了,学生可能就吃不上早餐了)
public void Cook()
...{
Console.WriteLine("[厨师]:听到起床铃声响了,为学生做早餐。");
}
}
// 主类
public class ListenerEvent
... {
public static void Main(String[] args)
...{
Ring ring = new Ring(); // 实例化一个铃声类[它是主角,都是因为它才牵连一系列的动作]
ring.doIt += new HandleEventOfStudents().GetUp; // 告诉铃声类,我委托你什么时候叫我起床.
ring.doIt += new HandleEventOfChefs().Cook; // 告诉铃声类,我也委托你叫我什么时候做早餐
ring.RaiseEvent(); // 你一响起,学生要起床,厨师要早餐,( 所以,大家都不喜欢听到这个铃声")
}
}
/**/ /*
* 一个C# 事件的简单例子
* 功能:当起床铃声响起,就引发学生起床/厨师做早餐两个事件
* 设计很简单,目的是说明C# 中事件的含义
*/
// 定义一个委托
public delegate void DoSomething();
// 产生事件的类
public class Ring
... {
// 声明一个委托事件
public event DoSomething doIt;
// 构造函数
public Ring()
...{
}
// 定义一个方法,即"响铃" 引发一个事件
public void RaiseEvent()
...{
Console.WriteLine("铃声响了.......");
// 通知 学生类,厨师类,该起床的起床,该做早餐的做早餐
if (null != doIt)
...{
doIt(); // 如果有注册的对象,才调用它们的方法
}
}
}
// 学生类( 处理事件类一)
public class HandleEventOfStudents
... {
// 默认构造函数
public HandleEventOfStudents()
...{
}
// 当听到起床铃响起,学生起床(学生太累了,想睡个安稳觉,它告诉“铃声类” :“我好好睡觉,时间到了,你再叫我起床”)
//学生把起床事件登记[委托]到铃声类,让铃声类来通知他起床,自己只管好好睡觉
public void GetUp()
...{
Console.WriteLine("[学生]:听到起床铃声响了,起床了。");
}
}
// 校园厨师类(处理事件类二)
public class HandleEventOfChefs
... {
// 默认构造函数
public HandleEventOfChefs()
...{
}
// 当听到起床铃响起, 应该准备给学生做早餐了(当然厨师也可能能是早就起床了)
// 厨师就把为学生做早餐的事情登记到[委托]到铃声类,让铃声来通知他什么时候做早饭,免得做早了(免得做早了,早餐凉了,做晚了,学生可能就吃不上早餐了)
public void Cook()
...{
Console.WriteLine("[厨师]:听到起床铃声响了,为学生做早餐。");
}
}
// 主类
public class ListenerEvent
... {
public static void Main(String[] args)
...{
Ring ring = new Ring(); // 实例化一个铃声类[它是主角,都是因为它才牵连一系列的动作]
ring.doIt += new HandleEventOfStudents().GetUp; // 告诉铃声类,我委托你什么时候叫我起床.
ring.doIt += new HandleEventOfChefs().Cook; // 告诉铃声类,我也委托你叫我什么时候做早餐
ring.RaiseEvent(); // 你一响起,学生要起床,厨师要早餐,( 所以,大家都不喜欢听到这个铃声")
}
}