创建事件:
定义委托->通过委托声明事件->添加触发事件条件->向事件中添加委托函数(往委托中添加程序)->通过条件(引发事件的函数)执行事件
using System; namespace EventAndDelegateTest { class Program { static void Main(string[] args) { Dog dog = new Dog(); Host host = new Host(dog); //当前时间,从2008年12月31日23:59:50开始计时 DateTime now = new DateTime(2020, 12, 31, 23, 59, 50); DateTime midnight = new DateTime(2021, 1, 1, 0, 0, 0); //等待午夜的到来 Console.WriteLine("时间一秒一秒地流逝... "); while (now < midnight) { Console.WriteLine("当前时间: " + now); System.Threading.Thread.Sleep(1000); //程序暂停一秒 now = now.AddSeconds(1); //时间增加一秒 } Console.WriteLine("小偷趁夜色潜入了房中....."); dog.OnAlarm(); Console.ReadLine(); } } //事件发起者 class Dog { //定义委托 public delegate void DogAlarmEventHandler(object sender, EventArgs args); //声明事件 public event DogAlarmEventHandler AlarmEvent; //引发事件的函数 public void OnAlarm() { //如果事件不为空 if(AlarmEvent != null) { Console.WriteLine("狗叫了"); this.AlarmEvent(this, new EventArgs()); } } } //事件接收者(使用者) class Host { //注册事件程序 public Host(Dog dog) { dog.AlarmEvent += new Dog.DogAlarmEventHandler(HostHandlerAlarm); } //事件处理程序 void HostHandlerAlarm(object sender, EventArgs e) { Console.WriteLine("主人抓住了小偷"); } } }