zoukankan      html  css  js  c++  java
  • 多播委托

    多播委托,顾名思义即使一个委托引用多个方法

    举列

    static void Test1
    {
       Console.writLine(“test1”);
    }
    static void Test2
    {
      Console.writLine("test2");     
    }
    static void Main(string[] args)
    {
       Action a = Test1;
       a += Test2//添加一个委托的引用   所以删除一个委托的应用为a -=Test2
       a();
       Console.ReadKey();
    }

    虚注意的几点为:1.当一个委托没有指向任何一个方法的时候,调用的话会出现异常null;

                                 2.按照顺序调用方法

                                 3.多播委托只能得到调用的最后一个方法的返回值

                                 4.在多播委托逐一调用方法时,有一个方法抛出异常,整个迭代就会停止

    下面这一委托为取得多播委托中所有方法的委托:

    Action a1 = Method1;

    a1+=Method2;

    Delegate[] delegates=a1.GetInvocationList();

    foreach(delegate d in delegates)

    {

    //d();

    d.DynamicInvoke(null);

    } 遍历多播委托中所有的委托,然后单独调用

    举列

    static void Test1
    {
       Console.writLine(“test1”);
    }
    static void Test2
    {
      Console.writLine("test2");     
    }
    static void Main(string[] args)
    {
       Action a = Test1;
       a += Test2
       Delegate[] delegetes=a.GetInvocationList();//使用GetInvocationList()把委托a中的方法传递给delegetes数组
    foreach(Delegate de in delegetes)
    {
    de.DynamicInvoke(); //明确知道类型的用Invoke()方法调用会接省时间
    }
    Console.Readkey();
    }
  • 相关阅读:
    《数据结构》树与二叉树
    C/C++ 一点笔记(1)
    c#中隐藏基类方法的作用
    VS2010 灵活运用快捷操作功能(新手必看)
    C# 之类复制 MemberwiseClone与Clone(深 浅 Clone)
    DLL笔记
    批处理文件
    .NET Remoting(一)
    MSI安装数据库
    关于用户角色权限的一点想法(RBAC)
  • 原文地址:https://www.cnblogs.com/jiangxiaoming/p/13024422.html
Copyright © 2011-2022 走看看