C#中的Lambda表达式[重复]
Posted
技术标签:
【中文标题】C#中的Lambda表达式[重复]【英文标题】:Lambda expression in C# [duplicate] 【发布时间】:2011-01-21 19:30:49 【问题描述】:是否存在使用 lambda 表达式特别有用或主要用途是编写更少代码的情况?
【问题讨论】:
编写更简洁易读的代码不是特别有用吗? 看看 John Skeet 的 SO 回答 here。这是另一个 SO 问题with specific uses of lambdas 嗯嗯,确实如此。但我想知道它是否是唯一的主题...... :-) 【参考方案1】:在语言中添加 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 等成为可能。也就是说,它们可以代表执行语义的能力和检查其结构的能力。
【讨论】:
你能提供一个表达式树的例子吗?谢谢 @Eric - 你忘了说“而且他们真的很酷”;) @Maurizio: blogs.msdn.com/charlie/archive/2008/01/31/…【参考方案2】:Lambda 表达式是syntactic sugar 对应anonymous methods,它们的用例大多相同。
Lambda 也可以转换为表达式树。
由于它们更短且更容易编写(至少对于简单的情况),这本身就很有帮助。
【讨论】:
我喜欢“语法糖”这个表达,我不知道。 不完全相同 - lambda 表达式也可以转换为表达式树,而匿名方法不能。 (没有“匿名委托”这样的术语 - 有 匿名方法 和 匿名函数 - 后者是一个涵盖匿名方法和 lambda 表达式的术语。以上是关于C#中的Lambda表达式[重复]的主要内容,如果未能解决你的问题,请参考以下文章