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# Lambda表达式理解

先来看两段C#代码,来比较Lambda表达式: Thread t = new Thread(() =>   {   AddIt AddDelegate = new AddIt(AddItem);  ...

c# 3.0新特性之使用Lambda表达式

c# 3.0新特性之使用Lambda表达式2009年8月18日 云飞扬 发表评论 阅读评论 -Working with Lambda Expressions 使用Lambda表达式Lambda表达式有...
  • rise51
  • rise51
  • 2011年01月19日 18:04
  • 328

C# 3.0语言的新特性——Lambda表达式

Lambda表达式 在C# 3.0 中,Microsoft 添加了“lambda 表达式”。lamdba表达式曾经用于很久以前的LISP计算机语言中,在1936年由一个美国数学家Alonzo Chu...

C# 3.0特性之Lambda表达式

源地址 http://www.cnblogs.com/SpadeQ/articles/1246226.html C# 3.0特性之Lambda表达式 A...

Java8初体验(一)lambda表达式语法

本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘。因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解偏差的地方,希望大家帮忙指出,我会持续修改和优化。本文是该系列的第一篇,...

Java8,Function函数式接口与Lambda表达式初体验

安装JDK1.8已经很长一段时间了,却没有了解过1.8的新特性,被人问了好几次都回答不上来,于是体验一把。 话不多说,什么是函数式接口? 函数式接口指的是只有单个抽象方法的接口,用来表达Lambd...
  • ysaicll
  • ysaicll
  • 2017年04月24日 13:39
  • 111

Java8初体验(一)lambda表达式语法

本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘。因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解偏差的地方,希望大家帮忙指出,我会持续修改和优化。本文是该系列的第一篇,...
  • wauit
  • wauit
  • 2014年04月14日 16:30
  • 559

Java8初体验(一)lambda表达式语法

转自http://ifeve.com/lambda/ 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘。因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解偏差的地方,希望...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c# 3.0 初体验 2 (Lambda表达式)
举报原因:
原因补充:

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