博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 委托链(多播委托)
阅读量:4973 次
发布时间:2019-06-12

本文共 2212 字,大约阅读时间需要 7 分钟。

委托既可以封装一个方法,又可以对同一类型的方法进行封装,它就是多播委托

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5  6 namespace DelegateTest 7 { 8     class Program 9     {10         //申明一个委托类型,它的实例引用一个方法11         //该方法传递0参数,返回void类型12         public delegate string DelegateTestOne();13 14         static void Main(string[] args)15         {16             //用静态方法来实例化委托17             DelegateTestOne teststatic = new DelegateTestOne(Program.method1);18 19             //用实例方法来实例化委托20             DelegateTestOne test2 = new DelegateTestOne(new Program().method2);21 22             //用实例方法来实例化委托23             DelegateTestOne test3 = new DelegateTestOne(new Program().method3);24 25             //定义空一个委托对象26             DelegateTestOne deleteAll = null;27             deleteAll += teststatic;28             deleteAll += test2;29             deleteAll += test3;30             Console.WriteLine(Test(deleteAll));31 32             Console.ReadLine();33         }34 35 36         public static string method1()37         {38 39             //Console.WriteLine("这是一个静态方法");40             return "这是一个静态方法";41         }42 43         public string method2()44         {45             //Console.WriteLine("这是实例方法2");46             return "这是实例方法2";47         }48 49         public string method3()50         {51            // Console.WriteLine("这是实例方法3");52             return "这是实例方法3";53         }54 55 56         //测试多播委托57         public static string Test(DelegateTestOne testone)58         {59             if (testone == null)60             {61                 return null;62             }63             StringBuilder returnstring = new StringBuilder();64 65             Delegate[] delegatearray = testone.GetInvocationList();66 67             foreach (DelegateTestOne t in delegatearray)68             {69                 try70                 {71                     returnstring.Append(t() + Environment.NewLine);72                 }73                 catch (Exception e)74                 {75 76                 }77             }78             //把结果返回给调用者79             return returnstring.ToString();80         }81 82     }83 }

运行结果:

转载于:https://www.cnblogs.com/xiongmujiang/p/10718111.html

你可能感兴趣的文章
《BI项目笔记》创建计算成员
查看>>
两个链表的第一个公共节点
查看>>
Leetcode 229.求众数II
查看>>
用PHP来获取access_token
查看>>
配置网络,集群主机名,ssh与scp,命令优先级
查看>>
数据类型说明 字符型
查看>>
【自定义组件】书写结构、模板样式
查看>>
USACO1.4.1 Packing Rectangles
查看>>
python 读取 csv 中文 乱码 解决办法
查看>>
命名空间--名称解析规则
查看>>
django中的Admin是如何工作的?
查看>>
GPS样例数据
查看>>
Eclipse中导入两个相同的工程
查看>>
C#实现ADH815通讯
查看>>
集成Spring与iBATIS
查看>>
教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
查看>>
UICollectionViewFlowLayout使用示例
查看>>
简历模板1
查看>>
与数论有关的模板
查看>>
【1】jQuery入门引言
查看>>