• 3.C#中的多重委托


    阅读目录

     一:多重委托概述
       二:多重委托实例

       一:多重委托概述

      1.委托的调用其实是一个调用列表,可以同时调用多个不同的方法
      2.第1个委托加上第2个委托赋予第3个委托,相当于把两个方法按顺序一排,先调用第一个方法,再调用第二个方法
      3.当一个委托列表为空的时候,对它进行调用会报错

     二:多重委托实例
     
     我们先写一个Number数字类,这个类里面有四个方法,分别是加减乘除,第一个委托实例compute1执行的是AddNumber方法,那么输出3如深红色框所示,第二个委托实例computer2执行的是SubNumber方法,那么输出的是-1如绿色框所示,第三个委托compute3=compute1+compute2,实际上是先调用compute1的AddNumber方法,再调用compute2的SubNumber方法,输出如红色框所示,第四个委托compute4先实例化了new Compute(Number.ExceptNumber)ExceptNumber方法,然后第三个委托compute3+=compute4,那么此时因为上面compute3已经等于compute1+compute2了,这里又+=了compute4,所以会先调用compute1的AddNumber方法,再调用compute2的SubNumber方法,最后调用compute4的ExceptNumber方法,输出如黄色框所示,我们再开始-=,先compute3-=compute4,然后输出如蓝色框所示,我们在-=compute2,输出如紫色框所示,compute3只剩下了一个compute1了,也就是AddNumber方法,如果我们再从compute3-=compute1,我们看到会报错,因为当一个委托列表为空时,对它调用会报错
       

     1 public delegate void Compute(int number1, int number2);
     2     class Program
     3     {
     4         static void Main(string[] args)
     5         {
     6             Compute compute1 = new Compute(Number.AddNumber);
     7             compute1(1, 2);
     8             Console.WriteLine();
     9 
    10             Compute compute2 = new Compute(Number.SubNumber);
    11             compute2(1,2);
    12             Console.WriteLine();
    13 
    14             Compute compute3 = compute1 + compute2;
    15             compute3(1,2);
    16             Console.WriteLine();
    17 
    18             Compute compute4 = new Compute(Number.ExceptNumber);
    19             compute3 += compute4;
    20             compute3(1, 2);
    21             Console.WriteLine();
    22 
    23             compute3 -= compute4;
    24             compute3(1, 2);
    25             Console.WriteLine();
    26 
    27             compute3 -= compute2;
    28             compute3(1, 2);
    29             Console.WriteLine();
    30 
    31             //compute3 -= compute1;
    32             //compute3(1, 2);
    33             //Console.WriteLine();
    34 
    35             Console.ReadLine();
    36         }
    37     }
    38 
    39     class Number
    40     {
    41         /// <summary>
    42         /// 加法
    43         /// </summary>
    44         /// <param name="number1"></param>
    45         /// <param name="number2"></param>
    46         public static void AddNumber(int number1, int number2)
    47         {
    48             Console.WriteLine("Add number result is {0}", number1 + number2);
    49         }
    50 
    51         /// <summary>
    52         /// 减法
    53         /// </summary>
    54         /// <param name="number1"></param>
    55         /// <param name="number2"></param>
    56         public static void SubNumber(int number1, int number2)
    57         {
    58             Console.WriteLine("Sub number result is {0}", number1 - number2);
    59         }
    60 
    61         /// <summary>
    62         /// 乘法
    63         /// </summary>
    64         /// <param name="number1"></param>
    65         /// <param name="number2"></param>
    66         public static void MultiNumber(int number1, int number2)
    67         {
    68             Console.WriteLine("MultiNumber number result is {0}", number1 * number2);
    69         }
    70 
    71         /// <summary>
    72         /// 除法
    73         /// </summary>
    74         /// <param name="number1"></param>
    75         /// <param name="number2"></param>
    76         public static void ExceptNumber(int number1, int number2)
    77         {
    78             Console.WriteLine("ExceptNumber number result is {0}", number1 / number2);
    79         }
    80     }

     

  • 相关阅读:
    spring security 学习资料
    设计模式,学习资料
    知名博主
    shiro 学习资料
    nuxt 中使用 koa-session
    koa-session 知识点
    MySQL 中的默认数据库介绍
    JUnit 学习资料
    027_git添加多账号设置
    023_supervisorctl管理服务注意事项
  • 原文地址:https://www.cnblogs.com/menglin2010/p/5229042.html
Copyright © 2020-2023  润新知