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

        }

    }

}

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

阅读剩余部分

相关阅读 >>

详解介绍C#是如何获取文件md5与sha1

C#调用默认浏览器打开网页的几种方法具体介绍(图)

C#实现原图片转缩略图

C#的socket实现udp协议通信的示例代码详解

详细介绍winformC#获得mac地址,ip地址,子网掩码,默认网关的代码实例(图)

C#最齐全的上传图片方法介绍

C#如何连接数据库?oledbconnection与sqlconnection的区别

详细介绍data url生成工具C#版第二版的示例代码

C#中实现退出程序后自动重新启动程序的示例代码分享

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

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




打赏

取消

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

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

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

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

评论

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