标签:
委托是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("实例方法输出"); }
运行结果如下:
标签:
原文地址:http://www.cnblogs.com/yiqiok/p/4343033.html