1 using System; 2 using System.Reflection; 3 4 namespace ConsoleApp1 5 { 6 class Program 7 { 8 // 自定义委托 9 public delegate void TestHandler(string msg); 10 // 使用自定义委托定义事件 11 public static event TestHandler TestEvent; 12 13 static void TrigerEvent(string msg) 14 { 15 if (TestEvent != null) 16 { 17 TestEvent(msg); 18 } 19 } 20 static void Man1(string msg) 21 { 22 Console.WriteLine(MethodBase.GetCurrentMethod().Name + " recv msg: " + msg); 23 } 24 static void Man2(string msg) 25 { 26 Console.WriteLine(MethodBase.GetCurrentMethod().Name + " recv msg: " + msg); 27 } 28 static void Man3(string msg) 29 { 30 Console.WriteLine(MethodBase.GetCurrentMethod().Name + " recv msg: " + msg); 31 } 32 static void Main(string[] args) 33 { 34 //加入事件订阅 35 TestEvent += new TestHandler(Man1); 36 TestEvent += new TestHandler(Man2); 37 TestEvent += new TestHandler(Man3); 38 TrigerEvent("is test event triger [1] "); 39 40 //移除事件订阅 41 TestEvent -= new TestHandler(Man2); 42 TrigerEvent("is test event triger [2] "); 43 44 Console.ReadKey(); 45 } 46 } 47 }
运行结果