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.執行觸發事件方法
相關文章
相關標籤/搜索