C#中的委托(与Ruby中的类似,方法看作一个类型)
发表于:2024-11-25 作者:热门IT资讯网编辑
编辑最后更新 2024年11月25日,using System; class B { public delegate dynamic AMethod();//定义委托 delegate关键字 dynamic就是那个 //会各种变的类型,基
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 done A did has been done A pick has been done 输出完成 (耗时 0 秒) - 正常终止