2011-05-14 15 views

Respuesta

9

Una expresión lambda es, simplemente, una expresión re-utilizable que tiene una serie de argumentos:

x => x + 1; 

La expresión anterior lee "para una x dada, volver x + 1".

En .NET, esto es de gran alcance, ya que puede ser compilado en un delegado anónimo, una función sin nombre, se puede declarar en línea con su código y evaluar para obtener un valor:

int number = 100; 

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

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

Sin embargo, el verdadero El poder de una expresión lambda es que se puede usar para inicializar una representación en memoria de la expresión misma.

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

Esto significa que usted puede dar a esa expresión a algo así como LINQ a SQL y se puede entender lo que significa la expresión , traducirla en una instrucción SQL que tiene el mismo significado. Aquí es donde las lambdas son muy diferentes de los métodos y delegados normales, y normalmente donde comienza la confusión.

2

Un pequeño método en línea sin nombre. ¿Eso es lo suficientemente básico para ti? No estoy seguro de lo que estás buscando exactamente.

Usted también dijo en términos "simples" - supongo que tiene un cierto nivel de experiencia de desarrollo de software (por lo que no es un laico completa)

+1

Si mira el código a través de algo como Reflector, entonces es un método. Supongo que puede, como lo hace VB, categorizar los métodos en Subrutinas (sin valor de retorno) y Funciones (devuelve un valor). Sin embargo, las lambdas no tienen que devolver valores. Por ejemplo, lambdas se usa con Parallel.Para no devolver valores porque se asignan a la Acción <...> en lugar de Func <...> –

+0

mi malo - Colin debidamente eliminado. –

3

Lambda expresiones son las funciones en línea que tienen una sintaxis diferente a las funciones regulares.

Ejemplo Lambda Expresión para cuadrar un número.

x => x * x 
1

En lenguajes de programación no funcionales, las expresiones (que actúan sobre variables) realizan cálculos y realizan esos cálculos una vez.

Las expresiones Lambda le permiten definir (en una expresión) a través de un código de sintaxis diferente que puede funcionar en una lista y conceptualmente puede considerarse una función.


Puede simplificar esto para decir "Le permiten definir funciones en expresiones".


No llega al "por qué". El por qué es el más interesante, en mi opinión. La expresión Lambda permite la manipulación de funciones y funciones parciales.

+0

"Podría simplificar esto para decir" Le permiten definir funciones en expresiones "." ¡Eso es lo que estaba buscando! – dennis