¿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#
Respuesta
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.
¿Podría proporcionar un ejemplo de un árbol de expresiones, por favor? Gracias –
@Eric - Se olvidó de decir "Y son realmente geniales";) –
@Maurizio: http://blogs.msdn.com/charlie/archive/ 2008/01/31/expression-tree-basics.aspx –
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.
I como la expresión "azúcar sintáctico", no lo sabía. –
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. –
@Jon - Gracias por la corrección. Respuesta actualizada. – Oded
- 1. C#: ¿Sin conversión implícita entre 'expresión lambda' y 'expresión lambda'?
- 2. C# Velocidad de expresión lambda
- 3. Expresión lambda en Powershell
- 4. C# interruptor en la expresión lambda
- 5. Lambda Expresión vs Functor en C++
- 6. Expresión Lambda
- 7. Expresión Lambda versus Statement Lambda
- 8. C# lambda expresión dirección inversa <=
- 9. std :: transformar utilizando C++ 0x expresión lambda
- 10. Cómo "dejar" en expresión lambda?
- 11. Sintaxis de la expresión Lambda
- 12. ¿Qué significa "Expresión Lambda"?
- 13. IComparer utilizando Lambda Expresión
- 14. Cómo funciona Lambda Expresión
- 15. lambda Expresión como propiedad
- 16. expresión lambda utilizando Foreach Cláusula
- 17. expresión lambda (MSVC++ vs g ++)
- 18. Almacenar una expresión Lambda en una variable
- 19. Reemplazar parámetros en una expresión lambda
- 20. Cómo filtrar una lista en C# con la expresión lambda?
- 21. convierta esta expresión LINQ en Lambda
- 22. conversión de expresión lambda en un árbol de expresión
- 23. Reemplazar parámetro en la expresión lambda
- 24. Python lambda con expresión regular
- 25. Comparación: LINQ vs LAMBDA Expresión
- 26. Expresión Lambda versus métodos anónimos
- 27. subconsulta en una expresión lambda o LINQ
- 28. "O" equivalente en Linq Donde() expresión lambda
- 29. "auto" en la expresión lambda pitón
- 30. OrdenarPor descendente en la expresión Lambda?
¿No es especialmente útil escribir códigos más concisos y legibles? – Joey
Eh eh, claro que sí. Pero me gustaría saber si es el único tema ... :-) –
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) –