小例子学习C#委托和Lambda表达式
首先提出一个问题:给你很多的姓名,让你找出一个姓氏的所有人,用程序实现。
这个程序用很多方法可以实现,这篇博文中,我们就利用委托和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 2 3 4 | public static bool IsMatch( string s) { return s.IndexOf( "田" ) == 0; } |
通过调用list.FindAll(IsMatch),找到所有姓氏为“田”的字符串。
C#2.0
直接写成如下代码即可
1 2 3 4 | list.FindAll( delegate ( string s) { return s.IndexOf( "田" ) == 0; }); |
C#3.0,Lambda表达式
写成如下形式
1 | list.FindAll(s => s.IndexOf( "田" ) == 0); |
完整的程序代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | class Program { static void Main( string [] args) { List< string > list = new List< string > { "田三涛" , "刘起涵" , "张晓轩" , "田圣彤" , "文筠彤" , "刘起涵" , "田优乔" , "文嘉珊" , "白田彤" , "廖子棉" , "张泽菲" , "田赞鑫" }; //C#1.0 //List<string> result = list.FindAll(IsMatch); //C#2.0 //List<string> result = list.FindAll(delegate(string s) // { // return s.IndexOf("田") == 0; // }); //C#3.0 List< string > result = list.FindAll(s => s.IndexOf( "田" ) == 0); foreach ( var item in result) { Console.WriteLine(item); } } public static bool IsMatch( string s) { return s.IndexOf( "田" ) == 0; } } |
通过比较C#1.0,C#2.0,C#3.0对程序的实现,我们发现C#越来越人性化,更加符合人的思维方式。
作者:程序旅途
出处:https://www.cnblogs.com/nianming/archive/2011/07/12/2104021.html
版权:本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!