2009-06-25 48 views

回答

16

Lambda表达式本身只存在于源代码中。它们本身没有类型,这就是为什么编译器总是坚持将它们转换为特定的类型。

这就是为什么这个代码不编译:

// No idea what type to convert to! 
object x = y => y.Length; 

但这:

Func<string, int> x = y => y.Length; 

Lambda表达式将被转换成要么委托类型表达式目录树类型。同样,匿名方法总是转换为委托类型。

+0

+1好的答案。我喜欢你解释lambda表达式对于委托或表达式树来说真的只是语法糖。 – 2009-06-25 15:01:24

4

Linq中的lambda操作构建了所谓的表达式树。你可以读一下它here

+4

那么他们可能会。或者他们可能会建立代表。这取决于提供商。 – 2009-06-25 14:21:43

0

这是一个匿名函数,必须符合某种委托。 msdn 所以,事实上,他们是一些委托类型的实例。

+2

除非它们被转换为表达式树... – 2009-06-25 14:23:25