首先提出一个问题:给你很多的姓名,让你找出一个姓氏的所有人,用程序实现。
这个程序用很多方法可以实现,这篇博文中,我们就利用委托和Lambda表达式的方法实现。
首先把所有的姓名放到一个集合中
1 |
List< 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
先定义一个静态方法,代码如下:
1 |
public static bool IsMatch( string s)
|
3 |
return s.IndexOf( "田" ) == 0;
|
通过调用list.FindAll(IsMatch),找到所有姓氏为“田”的字符串。
C#2.0
直接写成如下代码即可
1 |
list.FindAll( delegate ( string s)
|
3 |
return s.IndexOf( "田" ) == 0;
|
C#3.0,Lambda表达式
写成如下形式
1 |
list.FindAll(s => s.IndexOf( "田" ) == 0);
|
完整的程序代码:
03 |
static void Main( string [] args)
|
05 |
List< string > list = new List< string > { "田三涛" , "刘起涵" , "张晓轩" , "田圣彤" , "文筠彤" , "刘起涵" , "田优乔" , "文嘉珊" , "白田彤" , "廖子棉" , "张泽菲" , "田赞鑫" };
|
17 |
List< string > result = list.FindAll(s => s.IndexOf( "田" ) == 0);
|
18 |
foreach (var item in result)
|
20 |
Console.WriteLine(item);
|
24 |
public static bool IsMatch( string s)
|
26 |
return s.IndexOf( "田" ) == 0;
|
通过比较C#1.0,C#2.0,C#3.0对程序的实现,我们发现C#越来越人性化,更加符合人的思维方式。
首先提出一个问题:给你很多的姓名,让你找出一个姓氏的所有人,用程序实现。
这个程序用很多方法可以实现,这篇博文中,我们就利用委托和Lambda表达式的方法实现。
首先把所有的姓名放到一个集合中
1 |
List< 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
先定义一个静态方法,代码如下:
1 |
public static bool IsMatch( string s)
|
3 |
return s.IndexOf( "田" ) == 0;
|
通过调用list.FindAll(IsMatch),找到所有姓氏为“田”的字符串。
C#2.0
直接写成如下代码即可
1 |
list.FindAll( delegate ( string s)
|
3 |
return s.IndexOf( "田" ) == 0;
|
C#3.0,Lambda表达式
写成如下形式
1 |
list.FindAll(s => s.IndexOf( "田" ) == 0);
|
完整的程序代码:
03 |
static void Main( string [] args)
|
05 |
List< string > list = new List< string > { "田三涛" , "刘起涵" , "张晓轩" , "田圣彤" , "文筠彤" , "刘起涵" , "田优乔" , "文嘉珊" , "白田彤" , "廖子棉" , "张泽菲" , "田赞鑫" };
|
17 |
List< string > result = list.FindAll(s => s.IndexOf( "田" ) == 0);
|
18 |
foreach (var item in result)
|
20 |
Console.WriteLine(item);
|
24 |
public static bool IsMatch( string s)
|
26 |
return s.IndexOf( "田" ) == 0;
|
通过比较C#1.0,C#2.0,C#3.0对程序的实现,我们发现C#越来越人性化,更加符合人的思维方式。
|
请发表评论