C#委托和Lambda表达式(C#1.0,C#2.0,C#3.0)

 

首先提出一个问题:给你很多的姓名,让你找出一个姓氏的所有人,用程序实现。

这个程序用很多方法可以实现,这篇博文中,我们就利用委托和Lambda表达式的方法实现。

首先把所有的姓名放到一个集合中

1List<string> list = new List<string> { "田三涛", "刘起涵", "张晓轩", "田圣彤", "文筠彤", "刘起涵", "田优乔", "文嘉珊", "白田彤", "廖子棉", "张泽菲", "田赞鑫" };

然后利用List<T>的FindAll(Predicate<T> match)方法找到所有符合姓“田”的字符串。Predicate<T> 是对方法的委托,如果传递给它的对象与委托中定义的条件匹配,则该方法返回 true。 当前 List<T> 的元素被逐个传递给 Predicate<T> 委托,满足条件的元素被保存在返回的 List<T> 中。

下面我分别用C#1.0,C#2.0,C#3.0的方法完成我们的程序。

C#1.0

先定义一个静态方法,代码如下:

1public static bool IsMatch(string s)
2{
3    return s.IndexOf("田") == 0;
4}

通过调用list.FindAll(IsMatch),找到所有姓氏为“田”的字符串。

C#2.0

直接写成如下代码即可

1list.FindAll(delegate(string s)
2             {
3                 return s.IndexOf("田") == 0;
4             });

C#3.0,Lambda表达式

写成如下形式

1list.FindAll(s => s.IndexOf("田") == 0);

完整的程序代码:

01class Program
02   {
03       static void Main(string[] args)
04       {
05           List<string> list = new List<string> { "田三涛", "刘起涵", "张晓轩", "田圣彤", "文筠彤", "刘起涵", "田优乔", "文嘉珊", "白田彤", "廖子棉", "张泽菲", "田赞鑫" };
06 
07           //C#1.0
08           //List<string> result = list.FindAll(IsMatch);
09 
10           //C#2.0
11           //List<string> result = list.FindAll(delegate(string s)
12           // {
13           //     return s.IndexOf("田") == 0;
14           // });
15 
16           //C#3.0
17           List<string> result = list.FindAll(s => s.IndexOf("田") == 0);
18           foreach (var item in result)
19           {
20               Console.WriteLine(item);
21           }
22       }
23 
24       public static bool IsMatch(string s)
25       {
26           return s.IndexOf("田") == 0;
27       }
28   }

通过比较C#1.0,C#2.0,C#3.0对程序的实现,我们发现C#越来越人性化,更加符合人的思维方式。

转载于:https://www.cnblogs.com/pg-love/archive/2011/07/12/2104431.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值