• 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.执行触发事件方法
  • 相关阅读:
    第十二周作业
    第11周学习总结
    第十周学习总结(五一作业)
    第九周作业
    第八周作业
    第七周作业
    PAT1049、1048、1047
    例题3-5,例题4-2,例题4-3
    PAT甲级真题打卡:1002. A+B for Polynomials
    PAT甲级真题打卡:1001.A+B Format
  • 原文地址:https://www.cnblogs.com/thybk/p/7435858.html
Copyright © 2020-2023  润新知