本文摘自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#》频道 >>
清华大学出版社
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。
转载请注明出处:木庄网络博客 » 深入讲解C#中委托的+=和-=