首页 > 学院 > 开发设计 > 正文

初识C#委托及委托链

2019-11-17 02:31:23
字体:
来源:转载
供稿:网友

初识C#委托及委托链

委托是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("实例方法输出");        }

运行结果如下:


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表