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");

 

 

 

 

  

 

posted @ 2014-04-10 09:07  刘珍宝  阅读(2075)  评论(0编辑  收藏  举报