深入讲解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;

        }

    }

}

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

阅读剩余部分

相关阅读 >>

bitmap生成base64码(C#

C#二进制字节数组操作函数 截取字节数组subbyte的示例代码

C#thread同步mutex的代码详解

formdragger在C#中实现窗体拖拽器的方法详解

详解C#中array和arraylist的区别

新手学习.net编程计划-1

C#-json详解

详解C#使用xsd文件验证xml格式是否正确的实现方法

C#全应用导图的图文介绍

详细介绍C# 中 asp.net web api 的 roc

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




打赏

取消

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

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

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

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

评论

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