3.C#中的多重委托

摘要:
阅读目录1:多委托概述2:多委托示例1:多个委托概述1。委托调用实际上是一个调用列表,它可以同时调用多个不同的方法,调用它时会报告错误2:对于多个委托实例,我们首先编写一个Number Number类,它有四个方法,即加法、减法、,乘法和除法,以及第一个委托实例,计算

阅读目录

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

   一:多重委托概述

  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     }

 3.C#中的多重委托第1张
3.C#中的多重委托第2张

免责声明:文章转载自《3.C#中的多重委托》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇echarts —— 重叠图用户密码管理和 su 命令下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Debian忘记密码重置

我使用的系统是Debian8,但这种方法也适用于Debian7以上的系统。具体步骤是重新启动VPS。您可以使用“CTRL+ALT+DEL”按钮直接在面板或VNC上重新启动VPS,然后按图中的“e”按钮;在BIOS界面上,按“e”进入GRUB引导菜单,然后按“e”进入编辑;输入GRUB编辑红色框中的内容,并将“ro”替换为“rwinit=/bin/sh”;修改...

【01】如何在XMind中排列自由主题

如何在XMind中安排免费主题。在XMind思维导图软件中,用户可以根据需要添加免费主题。然而,由于自由主题的灵活性,它并不整洁,与需要控制界面有序排列的用户相比,这会造成一定的麻烦。首先选择要组织的所有免费主题,单击,然后在下拉框中选择以安排免费主题。有六种排列方式:左对齐、垂直居中、右对齐、顶部对齐、水平居中和底部对齐。...

【Lua】使用随机数(转)

游戏中有一个用于创建角色的随机命名功能,它使用随机数。我在网上找到一篇关于在Lua使用随机数的文章。标记它。Lua需要两个函数来生成随机数:数学。randomseed,数学。数学随机种子接收整数n作为随机序列种子。将系统时间视为随机种子是很自然的,也就是说,数学随机——然后连续生成i=1,5do打印结束的随机数,但问题出现了。如果程序在短时间内运行几次,您得...

SQLServer2008/2012 安装、添加sa用户和密码、多实例安装、修改端口, 重启生效

因为我们无法使用sa用户登录,所以只能使用系统登录。登录后,我们需要修改相关属性。右键单击数据库,然后单击属性。在这个sa的登录属性对话框中,我们首先需要设置这个用户的密码。由于此用户名是系统的用户,我们可以直接填写密码,然后再次确认密码。然后在对话框中,单击左上角的第二个属性服务器角色。这是您要实现的添加用户的角色。...

Vue跨层级传递slot的方法

但是我需要通过插槽在父组件中指定一个模板,而B组件引用C组件。组件C的部分模板需要在组件A中配置。模板引用A组件:{{node.text}}&lt;模板引用B组件:spanslot=“nodeMenu”slot scope=“{node}”&gt;node=“node”&gt;/span&gt;/div&gt;2.2如...

网易见外工作台(AI),语音转文字,快速制作字幕,中英翻译,在线修改字幕

网易可视工作台是网易人工智能事业部开发的AI智能语音转录平台,集视频收听、直播收听、语音转录、文档直接翻译功能于一体。虽然它目前只支持中文和英文,但足以满足大多数人的需求。使用网易外部工作台的视频翻译功能实际测量了一段8分钟的英语视频。翻译在不到1分钟内完成,支持在线修改听力和翻译内容。目前,它可以免费使用,体验非常好。...