了解一下什么是lambda表达式。

1,什么是lambda表达式?

  据查资料,lambda表达式来源于数学家Alonzo Church等人在1920年到1930年间发明的lambda积分。lambda积分是用于表示函数的一套系统,它使用希腊字母lambda(λ)来表示无名函数。近来,诸如Lisp和其方言的函数式编程语言使用这个术语来表示可以直接用于描述函数定义的表达式,表达式不再需要名字了。

2,lambda表达式的作用?

  简化匿名方法。

3,匿名方法转化为lambda表达式?

  可以通过如下步骤将匿名方法转换为lambda表达式。

  1> 删除delegate关键字。

  2> 在参数列表和匿名方法主体之间放lambda运算符=>。lambda运算符读作"goes to"。

  如下代码演示了这种转换。

MyDel del = delegate(int x) { return x + 1; };//匿名方法。将匿名方法赋值给变量del。
MyDel del1 = (int x) => { return x + 1; };//lambda表达式。
MyDel del2 = (x) => { return x + 1; };//lambda表达式。
MyDel del3 = x => { return x + 1; };//lambda表达式。
MyDel del4 = x => x+1;//lambda表达式。

4,lambda表达式的参数列表的要点?

  1> lambda表达式参数列表中的参数必须在参数数量,类型和位置上与委托相匹配。

  2> 表达式的参数列表中的参数不一定需要包含类型(如隐式类型),除非委托有ref或out参数-此时类型是必须的(如显式类型)。

  3> 如果只有一个参数,并且是隐式类型,周围的圆括号可以被省略,否则它就是必须的。

  4> 如果没有参数,必须使用一组空的圆括号。

 

lambda表达式在LINQ查询中的应用的例子,我想通过这个例子我们能够更快地理解lambda表达式。

例如:

 1 class Program
2 {
3 static void Main(string[] args)
4 {
5 int[] numbers = { 2,5,28,31,17,16,42}; //创建数据源。
6

7 var numsMethod = numbers.Where(x => x < 20);//x=>x<20即为lambda表达式。
8

9 foreach (var x in numsMethod) //使用foreach语句遍历结果。
10 {

11 Console.Write("{0}",x);
12 Console.WriteLine();
13 }
14
15 Console.ReadKey();
16 }
17 }

  程序输出结果为:2  5  17  16

 

注意:本文根据博客园文章整理,原文详见: http://www.cnblogs.com/mcgrady/archive/2011/12/29/2306678.html 

 

posted on 2013-09-27 11:46  xjc  阅读(253)  评论(0编辑  收藏  举报