深入讲解C#中委托的+=和-=


本文摘自PHP中文网,作者Y2J,侵删。

这篇文章主要介绍了C#中委托的+=和-=深入研究,本文深入研究+=和-=在执行时都做了哪些事情,加深对C#委托的理解和使用,需要的朋友可以参考下

写在前面

为什么会突然想说说委托?原因吗,起于一个同事的想法,昨天下班的路上一直在想这个问题,如果给委托注册多个方法,会不会都执行呢?为了一探究性,就弄了个demo研究下。

+=

大家都知道委托都继承自System.MulticastDelegate,而System.MulticastDelegate又继承自System.Delegate,可以通过+=为委托注册多个方法。那么他们是否都执行了呢?执行的结果又是怎样的呢?有返回值和没返回值的是否结果是否一样?那就试着说说+=都干了哪些事?

测试代码

代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

namespace Wolfy.DelegateDemo

{

    public delegate void ShowMsg(string msg);

    public delegate int MathOperation(int a, int b);

    class Program

    {

        static ShowMsg showMsg;

        static MathOperation mathOperation;

        static void Main(string[] args)

        {

            showMsg += ShowHello;

            showMsg += ShowHello1;

            showMsg("大家新年好啊");

            mathOperation += Add; 

            mathOperation += Multiply;

            int result = mathOperation(1, 2);

            Console.WriteLine(result.ToString());

            Console.Read();

        }

        static void ShowHello(string msg)

        {

            Console.WriteLine("哈喽:" + msg);

        }

        static void ShowHello1(string msg)

        {

            Console.WriteLine("哈喽1:" + msg);

        }

        static int Add(int a, int b)

        {

            return a + b;

        }

        static int Multiply(int a, int b)

        {

            return a * b;

        }

    }

}

你可以猜猜运行结果,如下图:

阅读剩余部分

相关阅读 >>

利用unity脚本自定义分辨率实现相机截一张高清截图

C#创建excel文件并将数据导出到excel文件的示例代码详解(图)

C#将unicode编码转换为汉字字符串的代码分析

详细介绍C# 利用irawpixels接口遍历栅格数据的代码实例

详解C#多线程之线程同步(图文)

C#执行原理深入解析(图文)

.net中创建webservice服务的实例分析(图文)

C#多线程编程实例-线程与窗体交互的代码分析

C#基础入门-关键字的介绍

C#如何使用reflect获取dll文件中的类型并调用?

更多相关阅读请进入《C#》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...