无为

Microsoft.NET俱乐部QQ在线即时交流高级群:52323011,技术源自交流与共享,特创建此高级群!希望大家踊跃参加,踊跃发言,共同解决问题。
随笔 - 69, 文章 - 0, 评论 - 30, 引用 - 1
数据加载中……

进一步阐述C#中的委托

前面讲到C#中的委托,见文章http://www.cnblogs.com/codeshark/archive/2008/03/24/1119453.html,细心的朋友会发现,静态方法能否“ 包装”到一个类里面,进行动态调用了?答案是肯定的。代码如下:
 1using System; 
 2delegate void EatDelegate(string food); 
 3class Man 
 4
 5private string name; 
 6public Man(string name) 
 7
 8this.name=name; 
 9}
 
10public void eat(string food) 
11
12Console.WriteLine(name+""+food); 
13}
 
14}
 
15class Chat 
16
17static void eatTogether(string food,params EatDelegate[] values) //可变数量的参数用委托数组实现 
18
19if (values==null
20
21Console.WriteLine("聊天结束"); 
22}
 
23else 
24
25EatDelegate eatChain=null;  //声明一个委托链
26foreach(EatDelegate ed in values) 
27eatChain+=ed; 
28eatChain(food); 
29Console.WriteLine(); 
30}
 
31}
 
32static void Main() 
33
34Man CH =new Man("葱花"); 
35Man YY=new Man("样样"); 
36Man DS=new Man("大蒜"); 
37EatDelegate ch=new EatDelegate(CH.eat); 
38EatDelegate yy=new EatDelegate(YY.eat); 
39EatDelegate ds=new EatDelegate(DS.eat); 
40Console.WriteLine("葱花,样样,大蒜在聊天"); 
41eatTogether("西瓜",ch,yy,ds); //委托实例名称 
42Console.WriteLine("葱花出去接电话"); 
43eatTogether("香蕉",yy,ds); 
44Console.WriteLine("葱花回来了"); 
45eatTogether("桔子",ch,yy,ds); 
46eatTogether(null,null); 
47}
 
48}
 
49
由此可以看出:代码的架构性至关重要。

posted on 2008-03-24 12:03 CodeShark 阅读(37) 评论(0)  编辑 收藏 网摘 所属分类: ASP.NET


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》



相关文章:

相关链接: