码迷,mamicode.com
首页 > Windows程序 > 详细

初识C#委托及委托链

时间:2015-03-16 23:03:48      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:

委托是c#很重要的特性。代码如下:

 class Program
    {
       public  delegate void DelegateTest();

        static void Main(string[] args)
        {
            DelegateTest dtstatic = new DelegateTest(Program.method1);//实例化,静态方法,不用new
            DelegateTest dtinstance = new DelegateTest(new Program().method2);//实例方法,需要new 
            DelegateTest delegatechain = null;                         //定义为null 的委托链
            delegatechain += dtinstance;//用 “+”添加委托实例
            delegatechain += dtstatic;//
           
            delegatechain();
            Console.Read();





       }
        private static void method1()
        {
            Console.WriteLine("静态方法输出");

        }
        private void method2()
        {
            Console.WriteLine("实例方法输出");
        }
    }

运行结果如下:

技术分享

从结果可以看出委托链的执行顺序为委托实例的添加顺序;

同理,也可用“-”移除委托链中的委托实例:

  class Program
    {
       public  delegate void DelegateTest();

        static void Main(string[] args)
        {
            DelegateTest dtstatic = new DelegateTest(Program.method1);//实例化,静态方法,不用new
            DelegateTest dtinstance = new DelegateTest(new Program().method2);//实例方法,需要new 
            DelegateTest delegatechain = null;                         //定义为null 的委托链
            delegatechain += dtinstance;//用 “+”添加委托实例
            delegatechain += dtstatic;
            delegatechain -= dtstatic;//用“-”移除委托实例
           
            delegatechain();
            Console.Read();





       }
        private static void method1()
        {
            Console.WriteLine("静态方法输出");

        }
        private void method2()
        {
            Console.WriteLine("实例方法输出");
        }

运行结果如下:

技术分享

 

初识C#委托及委托链

标签:

原文地址:http://www.cnblogs.com/yiqiok/p/4343033.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!