C# 传统的委托、匿名方法、Lambda对比
2015-05-04 22:29
381 查看
<span style="font-size:18px;">using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LambdaDemo { class Program { static void Main(string[] args) { Console.WriteLine("传统的委托代码示例:"); FindListDelegate(); Console.Write("\n"); Console.WriteLine("使用匿名方法的示例:"); FindListAnonymousMethod(); Console.Write("\n"); Console.WriteLine("使用Lambda的示例:"); FindListLambdaExpression(); } //传统的调用委托的示例 static void FindListDelegate() { //先创建一个泛型的List类 List<string> list = new List<string>(); list.AddRange(new string[] { "ASP.NET课程","J2EE课程", "PHP课程", "数据结构课程" }); Predicate<string> findPredicate = new Predicate<string>(IsBookCategory); List<string> bookCategory = list.FindAll(findPredicate); foreach (string str in bookCategory) { Console.WriteLine("{0}\t", str); } } //谓词方法,这个方法将被传递给FindAll方法进行书书籍分类的判断 static bool IsBookCategory(string str) { return str.EndsWith("课程") ? true : false; } //使用匿名方法来进行搜索过程 static void FindListAnonymousMethod() { //先创建一个泛型的List类 List<string> list = new List<string>(); list.AddRange(new string[] { "ASP.NET课程", "J2EE课程", "PHP课程", "数据结构课程" }); //在这里,使用匿名方法直接为委托创建一个代码块,而不用去创建单独的方法 List<string> bookCategory = list.FindAll ( delegate(string str) { return str.EndsWith("课程") ? true : false; } ); foreach (string str in bookCategory) { Console.WriteLine("{0}\t", str); } } //使用Lambda来实现搜索过程 static void FindListLambdaExpression() { //先创建一个泛型的List类 List<string> list = new List<string>(); list.AddRange(new string[] { "ASP.NET课程", "J2EE课程", "PHP课程", "数据结构课程" }); //在这里,使用了Lambda来创建一个委托方法 List<string> bookCategory = list.FindAll((string str) => str.EndsWith("课程")); foreach (string str in bookCategory) { Console.WriteLine("{0}\t", str); } Console.ReadLine(); } } } </span>
相关文章推荐
- 编写高质量代码改善C#程序的157个建议[为泛型指定初始值、使用委托声明、使用Lambda替代方法和匿名方法]
- C#中分别对委托、匿名方法、Lambda表达式、Lambda表达式树以及反射执行同一方法的过程进行比较。
- C# 匿名委托、匿名方法、匿名对象、Lambda表达式
- C# 委托的发展史: .Net 1.x 委托 =>.Net 2.x 匿名方法 => .Net 3.0/3.5 Lambda 表达式
- c# 中的委托以及匿名方法lambda
- C#基础知识--委托,匿名方法,Lambda
- C#学习之初步理解委托、事件、匿名方法和Lambda
- 为LINQ服务的C#新特性总结篇---扩展方法,匿名委托,lambda表达式,Action委托,Func委托,Linq中的order by,top和sum函数
- C#学习之初步理解委托、事件、匿名方法和Lambda
- C# 从CIL代码了解委托,匿名方法,Lambda 表达式和闭包本质
- 十二、C# 委托与Lambda表达式(匿名方法的另一种写法)
- 编写高质量代码改善C#程序的157个建议[为泛型指定初始值、使用委托声明、使用Lambda替代方法和匿名方法]
- C#学习之初步理解委托、事件、匿名方法和Lambda
- 再谈C#中的委托,匿名方法和Lambda表达式
- C#匿名委托和Java匿名局部内部类使用方法示例
- C#匿名类型及Lambda方法
- C# 入门(9) 委托(delegate),匿名方法,Lambda表达式
- 用五分钟重温委托,匿名方法,Lambda,泛型委托,表达式树
- 委托、匿名方法、Lambda表达式的演进
- 通过Func 委托理解委托和匿名方法及Lambda 表达式