2010-02-27 16 views
6

¿Hay alguna situación en la que el uso de la expresión lambda sea particularmente útil o su uso principal sea escribir menos código?Expresión lambda en C#

+10

¿No es especialmente útil escribir códigos más concisos y legibles? – Joey

+2

Eh eh, claro que sí. Pero me gustaría saber si es el único tema ... :-) –

+0

Eche un vistazo a la respuesta SO de John Skeet [aquí] (http://stackoverflow.com/questions/187414/can-you-explain-lambda -expresiones-cerrado). Y aquí hay otra pregunta de SO [con usos específicos de lambdas] (http://stackoverflow.com/questions/1954909/please-list-specific-examples-of-the-benefits-of-using-lambda-expressions) –

Respuesta

19

La justificación para agregar lambdas al idioma era dos cosas.

(1) Hacen posible la transformación sintáctica de las comprensiones de las consultas. Cuando usted dice

from customer in customers 
where customer.City == "London" 
select customer 

que se convierte en

customers.Where(customer=>customer.City == "London") 

(2) Pueden ser convertidos en árboles de expresión, y por lo tanto hacen LINQ a SQL, LINQ a Entidades, y así sucesivamente, es posible . Es decir, pueden representar tanto la capacidad de hacer su semántica como la capacidad de inspeccionar su estructura.

+0

¿Podría proporcionar un ejemplo de un árbol de expresiones, por favor? Gracias –

+6

@Eric - Se olvidó de decir "Y son realmente geniales";) –

+0

@Maurizio: http://blogs.msdn.com/charlie/archive/ 2008/01/31/expression-tree-basics.aspx –

2

Las expresiones Lambda son syntactic sugar para anonymous methods, y sus casos de uso son prácticamente iguales.

Lambdas también se puede convertir en árboles de expresiones.

Como son mucho más cortos y fáciles de escribir (al menos para los casos simples), eso en sí mismo es útil.

+0

I como la expresión "azúcar sintáctico", no lo sabía. –

+1

No * exactamente * lo mismo: las expresiones lambda también se pueden convertir en árboles de expresión, mientras que los métodos anónimos no. (No hay un término como "delegado anónimo" - hay * métodos anónimos * y * funciones anónimas * - este último es un término que abarca ambos métodos anónimos y expresiones lambda. –

+0

@Jon - Gracias por la corrección. Respuesta actualizada. – Oded