温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

.net 1.x中委托的示例分析

发布时间:2021-09-17 10:17:59 来源:亿速云 阅读:118 作者:小新 栏目:编程语言

小编给大家分享一下.net 1.x中委托的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

.net 1.x中的委托

在.net 1.x中委托的使用是这样的,如下代码:

 1 namespace DelegateDemo 2 { 3     //声明委托 4     public delegate void MyDel(string arg1, string arg2); 5  6     class Program 7     { 8         static void Main(string[] args) 9         {10             //.net 1.x中的委托11             Class1 c1 = new Class1();12 13             //创建委托对象14             MyDel myDel1 = new MyDel(c1.InstanceMethod);//实例方法15             MyDel myDel2 = new MyDel(Class1.StaticMethod);//静态方法16 17             //调用委托18             myDel1("a", "b");//或者myDel1.Invoke("a", "b");19             myDel2("a", "b");//或者myDel2.Invoke("a", "b");20 21             Console.ReadKey();22         }23     }24 25     public class Class126     {27         public void InstanceMethod(string arg1, string arg2)28         {29             Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));30         }31 32         public static void StaticMethod(string arg1, string arg2)33         {34             Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));35         }36     }37 }

从上面代码可以总结:

1,委托既可以接受实例方法,也可以接受静态方法,只要方法的签名和返回值类型与委托匹配即可。

2,调用委托有两种方法,第1种本质上也是调用委托的Invoke方法。

赋值委托

上面是使用new DelegateType()的方式创建委托的,其实可以使用更简单的方式来创建委托的。上面的创建委托的代码可以简化为:

1 //创建委托对象2 MyDel myDel1 = c1.InstanceMethod;//实例方法3 MyDel myDel2 = Class1.StaticMethod;//静态方法

为委托增加和移除方法

上面的例子,创建委托时只初始化了一个方法,其实委托可以添加多个方法的,添加方法通过'+=',移除方法通过'-='来实现,如下代码:

1 //创建委托对象2 MyDel myDel = c1.InstanceMethod;3 myDel += c1.InstanceMethod2;4 myDel += Class1.StaticMethod;5 myDel += Class1.StaticMethod2;

1,由多个委托组成的就是链式委托(或称多播委托),System.MulticastDelegate类便是为链式委托而设计的。

2,+=本质上调用的是Delegate.Combine方法。

调用委托

调用委托跟调用方法一样简单,只需要传入委托要求的参数,这些参数将用于调用委托的方法列表中的每一个方法,并且是依次序调用,如下代码:

1 //调用委托2 myDel("aaa","bbb");

链式委托之所以能够依次调用,原因是System.MulticastDelegate内部维护了一个指向下一个委托的指针。

输出结果:

.net 1.x中委托的示例分析

注意:

1,如果为委托添加了多个相同的方法,那么这些方法都会被重复调用。

2,如果委托有返值,并且委托的调用方法列表中包含多个方法,那么只会返回最后一个方法的返回值,其它的返回值都会被忽略。

最后用XMind来总结一下:

.net 1.x中委托的示例分析

以上是“.net 1.x中委托的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI