c# 3.0 初体验 2 (Lambda表达式)

原创 2007年09月18日 21:53:00
 
C#2.0的匿名方法允许我们以内联的方式来实现委托,而c#3.0的Lambda表达式允许我们使用一种更加接近人的思维,更加自然的方式来实现类似匿名方法的方式。计算机的发展告诉我们,人们对计算机上的研究都是不断在趋近于人的思维,而不是计算机的思维,比如我们已开始使用的汇编语言,然后出现了高级语言,面向对象的高级语言,等等。如何让计算机能够理解普通人的需求,我们程序员的作用就是起这种桥接作用,我们要不断的尝试让计算机更好的理解编成人员的思想。计算机能理解的抽象层级的提高,我们程序员就能更减轻痛苦。看下边的例子:
List.FindAll(
     Delegate(string s){
              Return  s.indexof(“abc”)>0;}
Lambda
    List.FindAll(s=>s.indexof(“abc”)>0);
    很明显,lamdba表达式更加接近人的思维,而不是象内联方法那样努力的在让计算机来理解,而lambda表达式表达的非常的自然,如果我们能以这样的方式编写程序,那么是多么的舒服。我们上边的内联方式有委托,有返回值,都是为计算机写,而不是趋近于人来思考的东西。
    (参数列表)=>表达式或者语句块
    (x,y)=〉x*y
     其实编译器会将Lambda表达式在编译的时候转化成委托类型。
Lambda表达式和委托类型
Lambda表达式L可以被转化为委托类型D,需要满足:
L和D拥有相同的参数个数。
L的参数类型与D的参数类型相同,主要隐式类型要参与类型辨析。
D的返回类型与L相同,无论L是表达式,还是语句块。
比如x=〉x*10的委托类型就是 delegate int MyDeg(int)
我们有下边的例子:
表达式MyClass.Process((x,y)=>x*y)就等同于下边的一段代码:
MyDletegate md1=new MyDelegate1(XXXXX);
MyClass.Process(md1);
Public static int bool XXXXX(int x,int y)
{
    Return x*y
}
 

C# 3.0 的Lambda表达式(Lambda Expressions)

Lambda 表达式(拉姆达表达式) 和 匿名方法 其实是一件事情。唯一的不同是:他们语法表现形式不同。Lambda 表达式是在语法方面的更进一步的进化。在本质上,他们是一件事情。他们的作用都是:产生...
  • ghj1976
  • ghj1976
  • 2007年06月12日 10:15
  • 5935

C#高级编程四十三天----Lambda表达式

Lambda表达式   案例: using System; using System.Collections.Generic; using System.Linq; using Syste...
  • shanyongxu
  • shanyongxu
  • 2015年07月20日 18:09
  • 747

c# 3.0 初体验 1

      大家可能都回抱怨为什么c#发展的回这么快呢?可能有很多的人连2.0都没有深入的接触,是的,我们已经有了3.0了。不用抱怨,因为c#比起来其他的一些语言来说太“年轻”了,所以它当然有很多需要...
  • qigaopan
  • qigaopan
  • 2007年09月18日 00:15
  • 528

C# Lambda表达式

自C#3.0开始,就可以使用一种新语法把实现代码赋予委托:Lambda表达式。只要有委托参数类型的地方,就可以使用Lambda表达式。 Lambda表达式的语法比匿名方法简单。如果所调用的方法有参数...
  • guwei4037
  • guwei4037
  • 2013年09月21日 20:54
  • 7202

C#中Lambda表达式的使用方法

Lambda表达式就是一个匿名函数,结构分左中右,左边不需要写函数名,只需要声明函数所需要的参数列表,不需要类型说明,可以自己推断出来,有些时候自己不能推断出,也可标出参数类型,也可以没有参数,就写一...
  • sosososolong
  • sosososolong
  • 2017年11月20日 15:21
  • 100

C# Lambda表达式详细总结

(一)输入参数 在Lambda表达式中,输入参数是Lambda运算符的左边部分。它包含参数的数量可以为0、1或者多个。只有当输入参数为1时,Lambda表达式左边的一对小括弧才可以省略。输入参数...
  • qq_36456952
  • qq_36456952
  • 2017年03月20日 15:49
  • 3365

Lambda Not In

select * from table1 where No not in(select subNo from table2) 对应的lambda表达式: var query=table...
  • xiuping05214
  • xiuping05214
  • 2014年05月08日 09:42
  • 471

Lambda表达式初体验·

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespac...
  • a_bule_boy
  • a_bule_boy
  • 2016年04月15日 17:25
  • 149

C# 3.0特性之Lambda表达式

源地址 http://www.cnblogs.com/SpadeQ/articles/1246226.html C# 3.0特性之Lambda表达式 A...
  • tangtao_xp
  • tangtao_xp
  • 2013年07月18日 14:38
  • 445

浅析C#中的Lambda表达式

上文中用了一点篇幅讲述了匿名方法的使用。自从C#3.0开始,就可以使用一种新语法把视线代码赋予委托,即Lambda表达式。只要有委托参数类型的地方,就可以使用Lambda表达式。上文中使用匿名方法的例...
  • wangshubo1989
  • wangshubo1989
  • 2015年08月25日 11:54
  • 1516
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c# 3.0 初体验 2 (Lambda表达式)
举报原因:
原因补充:

(最多只允许输入30个字)