我开始用C#2.0编程,所以我从未使用过lambda表达式,但是,为什么这么大惊小怪?它们只是围绕匿名代表的语法糖,还是还有一些我看不到的东西?
答案 0 :(得分:26)
嗯,lambda表达式在匿名方法上有两个主要内容:
除非您使用表达式树,否则它们与匿名方法非常相似。不同的是,通常你可以在一个语句中编写几个lambda表达式(链接方法调用在一起)而不会失去可读性,但匿名方法只是有点过于冗长。
顺便说一句,lambda表达式“只是围绕匿名委托的语法糖”并不是因为lambda表达式和匿名方法“只是围绕创建委托(和表达式树)的语法糖。”
不要忽视语法糖 - 匿名函数充当闭包的好处是巨大的,同时能够将代码放在您想要的位置,而不是单独的方法。
答案 1 :(得分:14)
它们可以很容易地用作委托中的语法糖,但lambda的重要之处在于编译器能够将它们转换为expression trees,从而开辟了许多可能性(其中最重要的是LINQ)
答案 2 :(得分:4)
具有非常简洁的语法使得围绕它们构建更多内容的可能性更大。想象一下复杂的Linq查询,没有任何语法糖。
答案 3 :(得分:4)
它们只是语法糖 匿名代表,或者在那里 还有一些我看不到的东西?
好问题。答案很复杂。首先,显然表达树是最重要的。但也有一些微妙之处。以下是关于lambdas与匿名方法略有不同的主题的五篇冗长和经常脱离的文章:
我所有关于涉及lambda表达式的问题的文章都存档在这里:
http://blogs.msdn.com/ericlippert/archive/tags/Lambda+Expressions/default.aspx