C#中的委托(与Ruby中的类似,方法看作一个类型)
原创
©著作权归作者所有:来自51CTO博客作者sunzongbao2007的原创作品,请联系作者获取转载授权,否则将追究法律责任
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 秒) - 正常终止
上一篇:C#中λ表达式
下一篇:C#线程与线程池的使用
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
C#中的委托(Update)
这节重新发布一下委托这篇文章,纠正了之前的一些纰漏。什么是委托?委托(delegate)是一种托管方法的数据
泛型 值类型 面向对象 运算符 方法参数 -
C#中的委托delegate
C#委托
c# 开发语言 java System 调用方法