先简单说下委托和事件: 委托是一个神奇的东西,简单来说它是一个指向方法的类型。 事件是一个委托类型的变量。 事件有发布器和订阅器,其实本质就是个 观察者模式。
关于事件,直接上 Demo:
1 /// <summary> 2 /// 发布类 3 /// </summary> 4 class Summer 5 { 6 // 定义一个委托 7 public delegate void SummerComeEventHandler(); 8 // 声明一个委托类型变量,即 "夏天来了" 事件 9 public event SummerComeEventHandler SummerComeEvent; 10 11 public void SummerCome() 12 { 13 Console.WriteLine("Summer is Coming!"); 14 // 触发 "夏天来了" 事件 15 SummerComeEvent(); 16 } 17 } 18 19 /// <summary> 20 /// 订阅器 21 /// </summary> 22 class Spring 23 { 24 public Spring(Summer summer) 25 { 26 // 订阅 "夏天来了" 事件,并回应 "春天走了" 27 summer.SummerComeEvent += this.SpringGone; 28 } 29 30 public void SpringGone() 31 { 32 Console.WriteLine("Spring is gone"); 33 } 34 } 35 36 class Program 37 { 38 static void Main(string[] args) 39 { 40 Summer summer = new Summer(); 41 Spring spring = new Spring(summer); 42 summer.SummerCome(); 43 Console.ReadKey(); 44 } 45 }
结果:
以上。