using System;class B{public delegate dynamic AMethod();//定义委托 delegate关键字 dynamic就是那个//会各种变的类型,基本万能的适合,此时AMethod可以看作一个“方法类”的名字 可以利用//这个名字 创建委托表。注意 ()内可以写参数,要求与被委托的方法相同,返回类型也是//因此,委托列表中的方法除了名字不同外,其余基本相同。//多用于GUI事件编程//其实 delegate是个类 System.Multicast.Delegate是他的基类public static void Main(){AMethod[] am={//创建委托表,数组型A.make,A.did,A.pick,};for(int i=0;i<3;i++){//这里foreach也行得通Console.WriteLine("{0} has been done",DoDelegate(am[i]));}}public static dynamic DoDelegate(AMethod method){//委托列表中的方法将委托给//DoDelegate,这个方法必须public static(其实是必须能随时访问到)return method();//这里 method是被委托方法类的实例,易懂}}class A{public static dynamic make(){return "A make";}public static string did(){return "A did";}public static string pick(){return "A pick";}}===========================================---------- 运行C#程序 ----------A make has been doneA did has been doneA pick has been done输出完成 (耗时 0 秒) - 正常终止