C#匿名函数与Lambda表达式
Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数。 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数。在C#中的Linq中的大部分就是由扩展方法和Lambda 表达式共同来实现,如:
1 public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate); 2 public static IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, int, TResult> selector);
下面使用一个Where方法,体现委托向Lambda 表达式优化的形式:
1 private List<Student> students = 2 { 3 new Student() { Name = "xiaoming" }, 4 new Student() { Name = "liufei" } 5 }; 6 7 //第一种 8 public bool predicate(Student s) 9 { 10 if (s.Name == "liufei") 11 { 12 return true; 13 } 14 else 15 { 16 return false; 17 } 18 } 19 Func<Student, bool> t = new Func<Student, bool>(predicate);//创建委托 20 IEnumerable<Student> result = students.Where(t); 21 22 //第二种 23 IEnumerable<Student> result = students.Where(delegate(Student s){ 24 if(s.Name == "liufei") 25 { 26 return true; 27 } 28 else 29 { 30 return false; 31 } 32 }); 33 34 //第三种 35 IEnumerable<Student> result = students.Where(s => { 36 if (s.Name == "liufei") 37 { 38 return true; 39 } 40 else 41 { 42 return false; 43 } 44 }); 45 46 //第四种 47 IEnumerable<Student> result = students.Where(s => s.Name == "liufei");