美文网首页
多播委托

多播委托

作者: 灰灰灰灰灰丶 | 来源:发表于2016-03-03 19:25 被阅读225次

    public static void text1()
    {
    Console.WriteLine("text1");
    }
    public static void text2()
    {
    Console.WriteLine("text2");
    }
    Action a =text1; //Action委托方法a指向了text1这个方法
    a+=text2;//添加了text2方法,同时又指向了text2这个方法
    //同时指向多个方法的委托叫多播委托
    a-=text1;//删除了text1这个方法

    //当一个委托没有指向任何方法时会抛异常,解决办法是先判断一下委托方法是否为空
    if(a!=null)
    a();
    //多播委托只能得到调用的最后一个方法的结果。一般把多播委托的返回值设为空(void);如果多播委托里有一个方法抛异常,那么其余方法也不去执行

    //得到一个多播委托内的所有方法的委托。可以用GetinvocationList()这个方法去得到多播委托内的所有方法,然后单独调用每一个方法
    Delegate[]delegates=a.GetinvocationList();
    foreach(Delegate item in delegates)
    {
    item.DynamicInvoke(多播委托中的方法);
    }

    相关文章

      网友评论

          本文标题:多播委托

          本文链接:https://www.haomeiwen.com/subject/cqcokttx.html