123

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.执行触发事件方法

 

posted @ 2017-08-26 17:14  thy22  阅读(295)  评论(0编辑  收藏  举报