当前位置:  编程技术>.net/c#/asp.net

C#学习笔记之多播委托的例子

    来源: 互联网  发布时间:2014-08-30

    本文导语:  代码如下:   代码示例: namespace 多播委托  {          /*          * 多播委托的实例          * 注意:          * ① 委托可以包含多个方法,成为多播委托          * ② 因为要返回多个方法,所以...

代码如下:
 

代码示例:
namespace 多播委托 

        /*
         * 多播委托的实例
         * 注意:
         * ① 委托可以包含多个方法,成为多播委托
         * ② 因为要返回多个方法,所以委托的签名就必须返回void
         * ③ 多播委托的方法链的的顺序未经严格定义,所以避免使用任何依赖调用顺序的委托
         * ④ 经过定义的多播委托逐个调用委托的方法,如果有任何一个出现错误,
         *    可以根据需要手动迭代下一个委托方法
         */ 
     
        //DisplayMethod类有三个静态方法 
        class DisplayMethod 
        { 
            //返回类型要定义为void 
            public static void one() 
            { 
                Console.WriteLine("one"); 
            } 
     
            public static void two() 
            {            
                Console.WriteLine("two"); 
                throw new Exception(); 
            } 
     
            public static void three() 
            { 
                Console.WriteLine("three"); 
            } 
        } 
     
        //定义委托 
        public delegate void MyDelegate(); 
     
        class Program 
        { 
            static void Main(string[] args) 
            { 
                //为委托添加方法,委托可以识别+, +=, -, -=运算符 
                //可以按下面的方式为委托添加方法 
                MyDelegate myOne = DisplayMethod.one; 
                MyDelegate myTwo = DisplayMethod.two; 
                MyDelegate myDelegate = myOne + myTwo; 
                myDelegate += DisplayMethod.three; 
                 
                /* 可以用下面方法调用被委托的三个方法
                 * myDelegate();
                 * 也可以通过调用委托的GetInvocationList()方法来返回一个委托方法的数组,
                 * 以迭代调用委托中的方法
                 */  
                foreach(MyDelegate my in  myDelegate.GetInvocationList()) 
                { 
                    try 
                    { 
                        my(); 
                    } 
                    catch 
                    { 
                        Console.WriteLine("throw error "); 
                        //如果有错误从委托列表中删除错误的方法 
                        myDelegate -= my; 
                    } 
                } 
     
                Console.WriteLine("删除方法two后。。。 。。。"); 
     
                //删除后的列表调用,只剩下one和three  www.
                foreach (MyDelegate my in myDelegate.GetInvocationList()) 
                { 
                    my(); 
                } 
     
                Console.Read(); 
            } 
             
        } 
    }
 

 有兴趣的朋友,可以动手测试下这段代码,看看效果如何?
 ,祝大家学习进步。


    
 
 

您可能感兴趣的文章:

  • C#学习笔记之C#的虚方法
  • C#学习笔记之C#中的类
  • C#学习笔记之C#类的初始化
  • C#.NET学习笔记5 C#中的条件编译
  • C#学习笔记之C#接口的索引器
  • C#学习笔记之C#只读字段
  • C# 全局变量的学习小结
  • c# 常量与字段学习
  • C#学习笔记之抽象类和抽象函数
  • c# MD5加密的代码(简单示例,仅供学习参考)
  • C# 泛型数组学习小结
  • C#学习笔记之C#结构
  • 实例学习C#中Ref,Out的用法
  • C#学习笔记之扩展方法
  • C#学习笔记之继承
  • C#类的学习笔记之C#构造函数
  • c#进度条ProgressBar学习笔记
  • C# 泛型数组实例学习与总结
  • 实例学习C#中is与As运算符号的用法
  • c# 类型构造器学习
  • c# 委托和事件实例学习
  • C#入门学习笔记之事件和委托的实例
  • c#委托学习示例分享
  • C#零基础学习理解委托
  • 学习 asp.net 的事件与委托
  • C#泛型:泛型特点、泛型继承、泛型接口、泛型委托学习笔记
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 大家能否推荐几个学习java的经典例子?
  • 学习design pattern,苦于没有java代码的例子,高手指点
  • 想学习linux下的C++开发,大家有没有好的例子推荐一下!
  • 学习正则!超基础简单例子
  • 学习C#静态函数及变量的一个精典例子与代码
  • 学习sql基础算法的三个例子
  • 从一个MySQL的例子来学习查询语句
  • python list语法学习(带例子)
  • JAVA/JSP学习系列之六(MySQL翻页例子)
  • sql server触发器学习总结及自动编号的例子
  • JAVA/JSP学习系列之八(改写MySQL翻页例子)
  • 学习 c# 钩子的小例子
  • JAVA/JSP学习系列之五(JDBC-ODBC翻页例子)
  • 刚开始学习linux下的驱动开发,书上的例子编译不了,大家帮忙看看
  • 有没有EPOLL的例子学习一下?
  • PHP介绍及学习网站推荐
  • 想深入学习Java应该学习哪些东西
  • 准备学习docker: docker version命令查看版本
  • 新手提问:学习c++同时也想学习unix和linux
  • HTML 学习总结及下一步学习教程推荐
  • 学习c后,学习pb,大家提点建议,谢谢哦
  • OpenStack相关学习资料搜集
  • 有最近开始学习Minix的吗?一起来学习吧
  • juqery的python实现:pyquery学习使用教程
  • 我想问问哪里有AIX下啊!~版本越新越好!~我想拿来学习学习
  • 想找共同学习Linux的新手,一起学习,共同成长
  • 学习java好 还是学习嵌入式开发好??
  • 学习linux网络编程需要学习些内核知识吗?
  • 我想学习linux桌面编程,那么有没有必要学习linux的内核以及内核的相关编程呢?
  • 从Delphi开始学习Java,如何学习Java.欢迎大家的光临!
  • 请问学习JAVABEANS是不是就是学习java.beans.*类库??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3