我真的没有得到 lambda表达式.虽然他们自ALGOL时代就已存在,但直到最近,当Python和Ruby变得非常受欢迎时,我才开始听到它们.既然C#具有=>
语法,那么我的世界(.NET)中的人们越来越多地讨论lamdba表达式.
我已经读过关于lambda演算的维基百科文章,但我不是一个真正的数学家.从实际角度来看,我并不是真的理解它.我什么时候会使用lambda表达式?为什么?我怎么知道这应该是我应该做的?
您能否以前后格式展示如何使用lambda表达式解决问题的示例?任何命令式语言都可以,但C#对我来说最容易理解.
基本上就C#而言,lambda表达式是创建委托(或表达式树)的简单方法,但是现在让我们把它们放在一边.
在C#1中,我们只能从普通方法创建委托实例.在C#2中,我们获得了匿名方法.在C#3中,我们获得了lambda表达式,这类似于更简洁的匿名方法.
当你想表达一些取一个值并返回一个值的逻辑时,它们特别简洁.例如,在LINQ的上下文中:
// Only include children - a predicate var query = dataSource.Where(person => person.Age < 18) // Transform to sequence of names - a projection .Select(person => person.Name);
在我关于闭包的文章中,对此进行了更全面的讨论 - 以及其他方面.