Welcome

首页 / 软件开发 / C# / [C# 3.0 入门] [第一章 Lambda表达式] 第三节:Lambda与匿名方法的区别

[C# 3.0 入门] [第一章 Lambda表达式] 第三节:Lambda与匿名方法的区别2010-06-13 博客园 五斗米Lambda表达式与匿名方法的区别

那么,为什么Lambda表达式比匿名方法写起来要短呢?这种像变戏法一样的手法真的能用吗?有没有重要信息遗漏掉呢?为了回答这些问题,就让我们把匿名方法和Lambda表达式比较一下,看看Lambda表达式究竟怎么写。

1using System;
2
3delegate int SampleDelegate(int x, int y);
4
5class Program
6{
7 private static void Calculate(int x, int y, SampleDelegate calculator)
8 {
9 Console.WriteLine(calculator(x, y));
10 }
11
12 static void Main(string[] args)
13 {
14 // 匿名方法
15 Calculate(1, 2,
16 delegate(int x, int y) { return x + y; }); // 输出:3
17
18 // Lambda表达式
19 Calculate(1, 2, (x, y) => x + y); // 输出:3
20 }
21}
22

List9 匿名方法与Lambda表达式的比较

这段代码中,下述部分分别是匿名方法和Lambda表达式的写法:

匿名方法

delegate(int x, int y) { return x + y; }

Lambda表达式

(x, y) => x + y

字面上比较一下就能发现以下不同:

* delegate关键字没有了

* return关键字没有了

* 指定参数的类型的int没有了

* 中括号“{ }”没有了

* 行尾的分号“;”没有了

* 新出现了“=>”这两个字符

下面,对这些区别,一个一个来解释。