委托链其实就是委托类型,只是委托链把多个委托链接在一起而已,也就是说,我们把链接了多个方法的委托称为委托链或多路广播委托。如下:

     public delegate void DelegateTest();

        static void Main(string[] args)
{
//用静态方法来实例化委托
DelegateTest dtstatic = new DelegateTest(Program.method1); DelegateTest dtinstance = new DelegateTest(new Program().method2); //定义一个委托对象,一开始初始化为null,即不代表任何方法。
DelegateTest delegatechain = null; //使用 “+”符号链接委托,链接多个委托后就成为了委托链 delegatechain += dtstatic;
delegatechain += dtinstance; //调用委托链
delegatechain();
Console.Read(); }
private static void method1()
{
Console.WriteLine("这是静态方法");
} //实例方法 private void method2()
{
Console.WriteLine("这是实例方法");
}

从委托链中移除委托

        public delegate void DelegateTest();

        static void Main(string[] args)
{
//用静态方法来实例化委托
DelegateTest dtstatic = new DelegateTest(Program.method1); DelegateTest dtinstance = new DelegateTest(new Program().method2); //定义一个委托对象,一开始初始化为null,即不代表任何方法。
DelegateTest delegatechain = null; //使用 “+”符号链接委托,链接多个委托后就成为了委托链 delegatechain += dtstatic;
delegatechain += dtinstance; //使用 “-”运算符 移除委托
delegatechain -= dtstatic;
//调用委托链
delegatechain();
Console.Read(); }
private static void method1()
{
Console.WriteLine("这是静态方法");
} //实例方法 private void method2()
{
Console.WriteLine("这是实例方法");
}

【c# 学习笔记】委托链的使用的更多相关文章

  1. Java-马士兵设计模式学习笔记-责任链模式-FilterChain功能

    一.目标 增加filterchain功能 二.代码 1.Filter.java public interface Filter { public String doFilter(String str) ...

  2. Java-马士兵设计模式学习笔记-责任链模式-模拟处理Reques Response

    一.目标 1.用Filter模拟处理Request.Response 2.思路细节技巧: (1)Filter的doFilter方法改为doFilter(Request,Resopnse,FilterC ...

  3. c#基础学习笔记-----------委托事件

    这里有一个比较简单的委托实例应用(跨窗体操作控件) http://blog.csdn.net/bdstjk/article/details/7004035 还有一个比较详细的介绍并深入理解委托事件的讲 ...

  4. 学习笔记——责任链模式ChainOfResponsibility

    责任链模式,主要是通过自己记录一个后继者来判断当前的处理情况.Handler中,再增加一个方法用于设置后继对象,如SetHandler(Handler obj). 然后Handler类以其子类的处理方 ...

  5. 【C++学习笔记】 链式前向星

    链式前向星是一种常见的储存图的方式(是前向星存图法的优化版本),支持增边和查询,但不支持删边(如果想要删除指定的边建议用邻接矩阵). 储存方式 首先定义数组 head[ i ] 来储存从节点 i 出发 ...

  6. C#图解教程学习笔记——委托

    一.委托概述委托和类一样,是用户自定义类型,也是引用类型.但类表示的是数据和方法的集合,而委托持有一个或多个方法,以及一系列预定义操作. 可以通过以下操作步骤来使用委托:(1)声明一个委托类型.委托声 ...

  7. [学习笔记] 舞蹈链(DLX)入门

    "在一个全集\(X\)中若干子集的集合为\(S\),精确覆盖(\(\boldsymbol{Exact~Cover}\))是指,\(S\)的子集\(S*\),满足\(X\)中的每一个元素在\( ...

  8. Java-马士兵设计模式学习笔记-责任链模式-处理数据

    一.目标 数据提交前做各种处理 二.代码 1.MsgProcessor.java public class MsgProcessor { private List<Filter> filt ...

  9. [js学习笔记] 原型链理解

    js中只有对象,包括对象,函数,常量等. prototype 只有函数里有这个属性. 对象里可以设置这个属性,但是没这个属性的意义 prototype指向一个对象,可以添加想要的方法. 该对象里有一个 ...

随机推荐

  1. centos svn的安装和配置

    1.安装svn yum -y install subversion 2.配置 mkdir /home/svn/admin/test mkdir /home/svn/svnrepos svnadmin ...

  2. MyBatis的关联查询

    关联映射的一对多 //查询经理角色 以及 该角色下对应的员工集合 public SmbmsRole getRoleAndUser(Integer id); <resultMap id=" ...

  3. javascript权威指南第21章 Ajax和Comet

    function createXHR(){ if(typeof XMLHttpRequest !='undefined'){ return new XMLHttpRequest(); }else if ...

  4. maven-setting.xml文件详解

    <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://mav ...

  5. Greenplum 查看连接与锁信息数据字典

    查看系统中会话/连接/SQL与锁情况 1.查看当前活动的客户端连接数  SELECT count(*) FROM pg_stat_activity WHERE NOT pid=pg_backend_p ...

  6. Springboot项目使用junit-test(@Test)报错原因汇总

    1.不要随便改测试包名,我就是因为这个错的!!! 2.有的是pom.xml文件中引入了junit测试的两个jar包 3.其他问题百度就行

  7. Django系列(一):前期准备

    1.web应用 Web应用程序是一种可以通过web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S.C/S是客户端 ...

  8. 【概率论】5-1:分布介绍(Special Distribution Introduction)

    title: [概率论]5-1:分布介绍(Special Distribution Introduction) categories: - Mathematic - Probability keywo ...

  9. 支持utf8的str_split函数

    <?php header("Content-type: text/html; charset=utf-8"); /** * 按字节数对字符串进行分片 * @param $st ...

  10. 前端武器库之DOM练习

    1.模态对话框 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...