2009-07-21 26 views
5

Si tengo Visual Studio 2008 y apunto a una aplicación .NET 2.0, ¿puedo seguir usando Lambda Expressions? Mi comprensión de Lambda Expressions es que es una característica integrada en el compilador, no en el framework, por lo que mi conclusión sería que podría usar Lambda en la aplicación .NET 2.0. ¿Alguien puede decirme si esto es así?Expresiones Lambda de VB.NET

Respuesta

12

Sí, esto es completamente compatible. Siempre que no construya un árbol de expresiones o haga referencia a System.Core, System.Xml.Linq, etc ... es perfectamente legal usar expresiones Lambda en una aplicación 2.0 de destino. Esto es cierto para cualquier otra característica de compilación introducida en VS2008 (VB9).

EDITAR

Varias respuestas incorrectamente que las expresiones lambda son una característica de la función de 3.5 o 3.0. Las expresiones Lambda son una característica de compilación, no de Framework. No requieren soporte de framework para funcionar y es perfectamente legal usarlos en una aplicación dirigida a 2.0.

El único lugar donde te meterías en problemas es si usaste un lambda como árbol de expresiones. Expression Trees es una característica de compilación y marco y requiere 3.5 para funcionar correctamente. Pero tienes que trabajar duro para habilitar esto mientras intentamos activamente evitar que esto suceda.

-3

No funciona. El uso de Linq requiere que System.Linq forme parte del ensamblaje de framework, que .NET 2.0 no tiene.

+0

sí, Dandan tiene razón. Además, no, no puede hacer referencia a los ensamblajes 3.5 simplemente colocándolos en su contenedor. He preguntado ... el problema es que también ha habido muchos cambios en el espacio de nombres del sistema. – andy

+0

Este no es el caso. LINQ es ciertamente compatible con el uso de un compilador 3.5 (Vb9) para apuntar a una aplicación 2.0 siempre que tenga suficientes métodos LINQ disponibles, como Seleccionar y Dónde. Es cierto para C# también – JaredPar

2

Sí, usted está en lo correcto. Puede usar expresiones lambda en lugar de métodos anónimos. El compilador clasificará el resto. Pruebe esto:

int sum = 0; 
Array.ForEach(new[] {1, 2, 3, 4}, x => sum += x); 

Lo que no puede hacer es usar cualquiera de las nuevas funciones de .Net 3.5 (es decir, Linq). Hacerlo requiere agregar referencias a System.Linq, System.Core, etc., que no están presentes en .Net 2.0.