標籤:int out 失敗 div size summary 總數 logs res
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 MyApp43 { 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.建立事件執行的Binder 方法
//5.執行個體化該委託的類
//6.把觸發事件的方法綁定在事件上
//7.執行觸發事件方法
C# 委託事件