C# 委托事件
1 namespace ConsoleApplication6 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 //实例化委托类 8 MyApp app=new MyApp(); 9 //事件绑定要执行的方法 10 app.PressKeyBoard += StratRun; 11 while (true) 12 { 13 //声明键盘按下的值 14 int onKey; 15 //尝试把键盘按下的字符串转换int数字类型。失败返回0; 16 int.TryParse(Console.ReadLine(), out onKey); 17 //执行触发事件的方法(传入总数和键盘按下的值) 18 app.OnPressKeyBoard(app.Count,onKey); 19 //打印总数值 20 Console.WriteLine("总数值为:"+app.Count); 21 } 22 23 24 } 25 /// <summary> 26 /// 创建执行方法 27 /// </summary> 28 /// <param name="count"></param> 29 /// <param name="num"></param> 30 /// <returns></returns> 31 static int StratRun(int count, int num) => count + num; 32 33 } 34 /// <summary> 35 /// 第一步声明委托 36 /// </summary> 37 /// <param name="count">计算前的总数</param> 38 /// <param name="num">数字</param> 39 /// <returns>计算后的总数</returns> 40 public delegate int PressKeyBoardEventHandler(int count,int num); 41 42 public class MyApp 43 { 44 /// <summary> 45 /// 总数 46 /// </summary> 47 public int Count = 0; 48 //第二步声明事件实例化委托 49 public event PressKeyBoardEventHandler PressKeyBoard; 50 /// <summary> 51 /// 创建方法触发事件 52 /// </summary> 53 /// <param name="count"></param> 54 /// <param name="num"></param> 55 /// <returns></returns> 56 public virtual void OnPressKeyBoard(int count, int num) 57 { 58 var invoke = PressKeyBoard?.Invoke(count, num); 59 if (invoke != null) 60 { 61 Count = (int) invoke; 62 } 63 } 64 } 65 }
//委托是一种类型。
//事件是委托的一个实例。
//1.声明委托
//2,声明事件实例化委托
//3.创建触发事件的方法
//4.创建事件执行的绑定方法
//5.实例化该委托的类
//6.把触发事件的方法绑定在事件上
//7.执行触发事件方法