WEB开发网      婵犻潧鍊婚弲顐︽偟椤栨稓闄勯柦妯侯槸閻庤霉濠婂骸浜剧紒杈ㄥ笚閹峰懘鎮╅崹顐ゆ殸婵炴垶鎸撮崑鎾趁归悩鐑橆棄闁搞劌瀛╃粋宥夘敃閿濆柊锕傛煙鐎涙ê鐏f繝濠冨灴閹啴宕熼鍡╀紘婵炲濮惧Λ鍕叏閳哄懎绀夋繛鎴濈-楠炪垽鎮归崶褍妲婚柛銊ュ缁傚秹鏁撻敓锟� ---闂佹寧娲╅幏锟�
开发学院软件开发C语言 [C# 3.0 入门] [第一章 Lambda表达式] 第三节:La... 阅读

[C# 3.0 入门] [第一章 Lambda表达式] 第三节:Lambda与匿名方法的区别

 2010-09-30 20:59:51 来源:WEB开发网 闂侀潧妫撮幏锟�闂佸憡鍨电换鎰版儍椤掑倵鍋撳☉娆嶄沪缂傚稄鎷�婵犫拃鍛粶闁靛洤娲ㄩ埀顒佺⊕閵囩偟绱為敓锟�闂侀潧妫撮幏锟�  闂佺ǹ绻楀▍鏇㈠极閻愬灚瀚梺鍨儏閳ь剙绉归弻銊р偓闈涙啞閻h京鈧敻鍋婇崰鏍х暦閿燂拷
核心提示:Lambda表达式与匿名方法的区别那么,为什么Lambda表达式比匿名方法写起来要短呢?这种像变戏法一样的手法真的能用吗?有没有重要信息遗漏掉呢?为了回答这些问题,[C# 3.0 入门] [第一章 Lambda表达式] 第三节:Lambda与匿名方法的区别,就让我们把匿名方法和Lambda表达式比较一下,看看Lambd

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没有了

* 中括号“{ }”没有了

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

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

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

首先,Lambda表达式使用的“=>”,叫“=>运算符”,读作“向~输入”(日本读法,跟国情有关)。在上例中,就读作“向x、y输入 x+y”(虽这样说,但如果不习惯也不必勉强这样读,笔者也不爱这样读,忒费劲)。delegate关键字并不是去掉了,如果理解为被“=>”运算符替换了的话可能更容易理解。这就是区分“匿名方法”与“Lambda表达式”的关键字。仅这一点,就从delegate的8个字母减到=>两个字母,少了6个字母呢!(这账算的,也不知是真傻还是精明过头了。对我们C#程序员来说,敲入delegate恐怕要比敲入=>快多了。鬼知道=、& gt;这两个字符在哪个键上,每次都要低头去找,还要按Shift,麻烦!)

1 2  下一页

Tags:入门 第一章 Lambda

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接