2011-05-14 35 views

回答

9

甲lambda表达式,简单地说,可重复使用的表达,这需要数目的参数:

x => x + 1; 

上述表达式读取“对于一个给定的x,返回X + 1”。

在.NET中,这是强大的,因为它可以被编译成一个匿名委托,你可以用你的代码内嵌声明和评价一个匿名函数来获得一个值:

int number = 100; 

Func<int, int> increment = x => x + 1; 

number = increment(number); // Calls the delegate expression above. 

然而,真正的lambda表达式的强大之处在于它可以用来初始化表达式本身的内存表示。

Expression<Func<int, int>> incrementExpression = x => x + 1; 

这意味着,你可以给表达类似的LINQ to SQL,它可以理解的表达意味着,将其转化为具有相同含义的SQL语句。这就是lambda与正常方法和代表非常不同的地方,通常是混乱开始的地方。

2

一个小的无名内联方法。这对你来说基本够用吗?我不确定你在找什么。

您还在“外行”的术语说 - 我相信你有软件开发经验,一定程度(所以不是一个完整的外行)

+1

如果你通过类似Reflector的东西来看代码,那么它是一种方法。我想你可以象VB一样将子方法分为子例程(无返回值)和函数(返回值)。但是,lambda不需要返回值。例如,与Parallel.For一起使用的lambdas不返回值,因为它们映射到Action <...>而不是Func <...> – 2011-05-14 11:57:30

+0

我的错误 - 正确删除了Colin。 – 2011-05-14 11:59:08

3

Lambda表达式是具有不同的语法规则的功能,内联函数。

示例用于平方数的Lambda表达式。

x => x * x 
1

在非函数式编程语言中,表达式(对变量起作用)执行计算并执行一次这些计算。

Lambda表达式允许您通过可以在列表中工作的不同语法代码定义(在表达式中),并且可以在概念上将其视为函数。


你可以简化它来说“他们让你在表达式中定义函数”。


不太理解“为什么”。在我看来,为什么更有趣。 Lambda表达式允许对函数和部分函数进行操作。

+0

“你可以简化说”他们让你在表达式中定义函数“。”这就是我期待的! – dennis 2011-05-14 12:10:38