2009-07-21 13 views
5

Si j'ai Visual Studio 2008 et que je cible une application .NET 2.0, puis-je toujours utiliser des expressions Lambda? Ma compréhension de Lambda Expressions est que c'est une fonctionnalité intégrée dans le compilateur, pas le framework, donc ma conclusion serait que je pourrais utiliser Lambda dans l'application .NET 2.0. Quelqu'un peut-il me dire si c'est le cas?Expressions Lambda VB.NET

Répondre

12

Oui, cela est complètement pris en charge. Tant que vous ne construisez pas d'arbre d'expression ou que vous ne faites pas référence à System.Core, System.Xml.Linq, etc ... il est parfaitement légal d'utiliser des expressions Lambda dans une application 2.0. Cela est vrai pour toute autre fonctionnalité du compilateur introduite dans VS2008 (VB9).

EDIT

Plusieurs réponses indiquent à tort que Lambda expressions sont une caractéristique de la fonction 3.5 ou 3.0. Les expressions lambda sont une fonctionnalité du compilateur et non une structure. Ils ne nécessitent aucun support de structure pour fonctionner et il est parfaitement légal de les utiliser dans une application vers 2.0.

Le seul endroit où vous auriez des problèmes serait si vous utilisiez un lambda comme arbre d'expression. Les arbres d'expression sont à la fois une fonctionnalité de compilateur et de structure et nécessitent 3.5 pour fonctionner correctement. Mais vous devez travailler dur pour permettre cela car nous essayons activement d'empêcher cela.

-3

Cela ne fonctionne pas. L'utilisation de Linq nécessite que System.Linq fasse partie de l'assembly de framework, ce qui n'est pas le cas pour .NET 2.0.

+0

oui, dandan a raison. En outre, non, vous ne pouvez pas référencer les assemblages 3.5 en les mettant simplement dans votre bac. J'ai demandé ... le problème est qu'il y a eu beaucoup de changements dans l'espace de noms du système aussi. – andy

+0

Ce n'est pas le cas. LINQ est certainement supporté en utilisant un compilateur 3.5 (Vb9) pour cibler une application 2.0 à condition que vous ayez des méthodes LINQ suffisamment disponibles telles que Select et Where. True pour C# aussi – JaredPar

2

Oui, vous avez raison. Vous pouvez utiliser des expressions lambda à la place de méthodes anonymes. Le compilateur va trier le reste. Essayez ceci:

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

Ce que vous ne pouvez pas faire est d'utiliser l'une des nouvelles fonctionnalités de .Net 3.5 (c.-à-Linq.). Pour ce faire, vous devez ajouter des références à System.Linq, System.Core, etc., qui ne sont pas présentes dans .Net 2.0.

Questions connexes