2009-06-25 36 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