2009-06-25 10 views

Respuesta

16

Las expresiones Lambda solo existen en el código fuente. Ellos no tienen un tipo ellos mismos, por lo que el compilador siempre insiste en que se conviertan a un tipo específico.

Es por eso que este código no se compila:

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

Pero esto hace: expresiones

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

Lambda siempre se convierten en ya sea un tipo de delegado o un tipo de árbol de expresión . Del mismo modo, los métodos anónimos siempre se convierten en un tipo de delegado.

+0

+1 Buena respuesta. Me gusta que explique cómo las expresiones lambda son en realidad solo azúcar de sintaxis para un delegado o un árbol de expresiones. –

4

Las operaciones de Lambda en Linq crean lo que se llama árboles de expresión. Puedes leer un poco al respecto here.

+4

Bueno, podrían. O podrían construir delegados. Depende del proveedor. –

0

Es una función anónima que debe ajustarse a algún tipo de delegado. msdn Así que, de hecho, son ejemplos de algún tipo de delegado.

+2

A menos que se conviertan en un árbol de expresiones ... –