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(); // 你一响起,学生要起床,厨师要早餐,( 所以,大家都不喜欢听到这个铃声") }}