zoukankan      html  css  js  c++  java
  • 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.执行触发事件方法
  • 相关阅读:
    pytest ini配置文件格式
    C#星辰之路
    bootstrap
    rabbitmq 安装
    curl 下载文件
    mysql 面试题
    mvn --version
    后台运行的nohup vs &
    scp
    linux下.tar.gz和.gz文件解压详解
  • 原文地址:https://www.cnblogs.com/thybk/p/7435858.html
Copyright © 2011-2022 走看看