博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

关于Lambda表达式

Posted on 2009-03-30 09:37  陈 亮  阅读(2780)  评论(6编辑  收藏  举报
 

Lambda表达式是C#3.0的一种新语法,语法简洁

为编写匿名方法提供了更简明的函数式的句法.

 

我通过一个示例来说明Lambda表达式的原理:

Lambda表达式和匿名方法都来源于委托

 

我们来看看委托的使用

C#1.0:

Code

 

 

C#2.0时可以使用匿名方法:

 

Code

 

 

C#3.0使用Lambda表达式:

 

 

Code

 

  

使用Lambda表达式更简洁,为什么那么简洁.其实是编译器为我们做了很多事情.

 Calculate result = (ta, tb) => ta + tb;

这句话 编译器在编译的时候 会为我们生成一个私有的静态方法.透过ILDASM可以看到它是怎么帮助我们的,

 

 

编译器为我们声明声明了一个私有静态的Calculate委托字段 和一个静态的私有方法.

 

通过IL代码可以看看Main方法内部是怎么实现的

 

Code

 

可以看出IL_0005: IL_001f 这段代码是初始化编译器为我们生成的委托

下面几行IL指令可以看出来是为我们初始化委托

 

Code

 

透过IL代码 我们看到了Lambda表达式的的正真实现方法.

 看到了C#语言没有什么改变 只是编译器为我们完成了很多东西

 

 

如有不对的.请指出 谢谢!!