千家信息网

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

发表于:2024-09-27 作者:千家信息网编辑
千家信息网最后更新 2024年09月27日,小编给大家分享一下.net 1.x中委托的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!.net 1.x中的委托在
千家信息网最后更新 2024年09月27日.net 1.x中委托的示例分析

小编给大家分享一下.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内部维护了一个指向下一个委托的指针。

输出结果:

注意:

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

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

最后用XMind来总结一下:

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

委托 方法 代码 多个 中委 实例 对象 篇文章 静态 链式 示例 分析 内容 参数 方式 本质 面的 相同 不怎么 之所以 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北办公系统软件开发收费报价表 人体姿势识别数据库 范德华体积数据库 三级网络技术上机怎么考 数据库安全日志分析安全配置 为什么浪潮服务器出货量高 速唯有品互联网信息科技 ajax数据库的增删改查 戴尔云服务器安全标准 内向的女生适合做软件开发吗 手机我的世界架设服务器 静安区企业软件开发报价有哪些 阳光软件开发工作室 网络安全发言稿范文 数据库自增长能加字母吗 dhcp设置dns服务器 excel截取单元格数据库 技术软件开发合同模板 湖南舞龙软件开发有限公司 软件开发3年工作经验工资 软件开发十年工作经验工资待遇 网上建设服务器维护 什么硬件可以做服务器 oracle数据库武汉培训 合肥市公安局网络安全支队长 论述网络安全的技术 服务器上管理工具在哪里 日报网络安全知识展板 日报 居家办公软件开发哪找 删除test数据库 代码
0