进一步阐述C#中的委托

前面讲到C#中的委托,细心的朋友会发现,静态方法能否“ 包装”到一个类里面,进行动态调用了?答案是肯定的。代码如下:
using System;
delegate void EatDelegate(string food);
class Man
{
private string name;
public Man(string name)
{
this.name=name;
}
public void eat(string food)
{
Console.WriteLine(name+"吃"+food);
}
}
class Chat
{
static void eatTogether(string food,params EatDelegate[] values) //可变数量的参数用委托数组实现
{
if (values==null)
{
Console.WriteLine("聊天结束");
}
else
{
EatDelegate eatChain=null;  //声明一个委托链
foreach(EatDelegate ed in values)
eatChain+=ed;
eatChain(food);
Console.WriteLine();
}
}
static void Main()
{
Man CH =new Man("葱花");
Man YY=new Man("样样");
Man DS=new Man("大蒜");
EatDelegate ch=new EatDelegate(CH.eat);
EatDelegate yy=new EatDelegate(YY.eat);
EatDelegate ds=new EatDelegate(DS.eat);
Console.WriteLine("葱花,样样,大蒜在聊天");
eatTogether("西瓜",ch,yy,ds); //委托实例名称
Console.WriteLine("葱花出去接电话");
eatTogether("香蕉",yy,ds);
Console.WriteLine("葱花回来了");
eatTogether("桔子",ch,yy,ds);
eatTogether(null,null);
}
}
由此可以看出:代码的架构性至关重要。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值