2009-07-21 8 views
5

Wenn ich Visual Studio 2008 habe und ich eine .NET 2.0-Anwendung als Ziel habe, kann ich dann Lambda Expressions verwenden? Mein Verständnis von Lambda Expressions ist, dass es ein Feature ist, das in den Compiler integriert ist, nicht das Framework, also wäre meine Schlussfolgerung, dass ich Lambda in .NET 2.0 verwenden könnte. Kann mir bitte jemand sagen, ob das so ist?VB.NET Lambda Expressions

Antwort

12

Ja, das wird vollständig unterstützt. Solange Sie keinen Ausdrucksbaum erstellen oder anderweitig auf System.Core, System.Xml.Linq usw. verweisen, ist es absolut legal, Lambda-Ausdrücke in einer abwärts gerichteten 2.0-Anwendung zu verwenden. Dies gilt für alle anderen Compilerfunktionen, die in VS2008 (VB9) eingeführt wurden.

EDIT

Mehr Antworten geben fälschlicherweise an, dass Lambda-Ausdrücke sind ein Merkmal der 3.5 oder 3.0-Funktion. Lambda-Ausdrücke sind eine Compiler-Funktion und keine Framework-Komponente. Sie benötigen keine Framework-Unterstützung, um funktionieren zu können, und es ist vollkommen legal, sie in einer Anwendung zu verwenden, die auf 2.0 beschränkt ist.

Der einzige Ort, an dem Sie in Schwierigkeiten geraten würden, wäre, wenn Sie ein Lambda als Ausdrucksbaum verwendet hätten. Expression Trees sind sowohl ein Compiler- als auch ein Framework-Feature und benötigen 3.5, um korrekt zu funktionieren. Aber Sie müssen hart arbeiten, um dies zu ermöglichen, während wir aktiv versuchen, dies zu verhindern.

-3

Es funktioniert nicht. Bei Verwendung von Linq muss System.Linq Teil der Framework-Assembly sein, die in .NET 2.0 nicht enthalten ist.

+0

Ja, Dandan hat Recht. Nein, Sie können nicht auf die 3.5 Assemblies verweisen, indem Sie sie einfach in den Papierkorb legen. Ich habe gefragt ... Das Problem ist, dass es auch im System-Namensraum viele Änderungen gegeben hat. – andy

+0

Dies ist nicht der Fall. LINQ wird mit Sicherheit mit einem 3.5-Compiler (Vb9) unterstützt, um auf eine 2.0-Anwendung zu zielen, vorausgesetzt, Sie verfügen über ausreichend verfügbare LINQ-Methoden wie Select und Where. Das gilt auch für C# – JaredPar

2

Ja, Sie haben Recht. Sie können Lambda-Ausdrücke anstelle von anonymen Methoden verwenden. Der Compiler wird den Rest sortieren. Versuchen Sie dies:

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

Was Sie nicht tun können, ist eine der neuen Funktionen von .Net 3.5 (dh. Linq) zu verwenden. Dazu müssen Referenzen zu System.Linq, System.Core usw. hinzugefügt werden, die in .Net 2.0 nicht vorhanden sind.

Verwandte Themen