C#中的Lambda表达式

7

在使用lambda表达式时,是否存在特别有帮助的情况,或者它的主要用途是为了写更少的代码?


10
写更加简洁易懂的代码难道不已经特别有帮助了吗? - Joey
请查看John Skeet在Stack Overflow上的答案此处。这里还有另一个SO问题,其中列出了lambda表达式的具体用途链接 - David Robbins
2
呃呃,当然啦。但我想知道它是不是唯一的话题... :-) - Maurizio Reginelli
2个回答

19

引入lambda表达式的原因有两点。

(1) 它们使得查询推导式的语法转换成为可能。当你说:

from customer in customers 
where customer.City == "London" 
select customer
那就这样变成了。
customers.Where(customer=>customer.City == "London")

(2) 它们可以转化为表达式树,从而使得LINQ-to-SQL、LINQ-to-Entities等成为可能。也就是说,它们可以同时代表执行语义的能力检查其结构的能力


请问您能提供一个表达式树的例子吗?谢谢。 - Maurizio Reginelli
6
@Eric - 你忘了说“它们真的很酷”;) - David Robbins
@Maurizio:http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx - Eric Lippert

2
Lambda表达式是匿名方法的语法糖,它们的用例大多相同。
Lambda表达式也可以转换为表达式树。
它们更短、更容易编写(至少对于简单情况而言),这本身就很有帮助。

我喜欢“语法糖”这个表达,我之前不知道它的意思。 - Maurizio Reginelli
1
并不完全相同 - lambda表达式也可以转换为表达式树,而匿名方法则不能。 (“匿名委托”这个术语不存在 - 有匿名方法匿名函数 - 后者是一个涵盖匿名方法和lambda表达式的术语。 - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接