Mit Version 7 wurde aus Visual Basic die .NET-Programmiersprache VB.NET. Nun steht mittlerweise schon Version 10 am Start bereit. Und aus der Sprache für die „Bedürfnisse eines Anfängers“ ist schon längst ein professionelles Werkzeug geworden. Dieser Artikel soll eine Übersicht vermitteln, welche Neuerungen und vor allen Dingen welche Verbesserungen den VB.NET-Programmierer mit der nächsten Version erwarten. Dabei wird der Schwerpunkt auf eine Übersicht gelegt, da einige Punkte für sich bereits einen eigenen Artikel rechtfertigen. Die gezeigten Neuerungen umfassen sowohl Verbesserungen und Erweiterungen an der Sprache an sich als auch an der integrierten Entwicklungsumgebung des Visual Studios 2010.
Automatische Zeilenfortsetzung
Die Tage des Underscores („_“) für die Zeilenfortsetzung langer Anweisungen über mehrere Zeilen sind gezählt. Anweisungen können sich nun über mehrere Zeilen erstrecken. Möglich ist das z. B. nach Kommata, Klammern, &-Zeichen, allen Zuweisungsoperatoren, allen binären Operatoren, Is und IsNot, bei eingebetteten XML-Ausdrücken nach oder vor %> und einigen anderen Sprachelementen, sodass auch LINQ-Abfragen und For Each-Schleifen von diesem neuen Feature profitieren können:
Dim vProcesses = From proc In Process.GetProcesses Where proc.MainWindowTitle.StartsWith("V") Select proc.ProcessName, proc.Id, proc.MainWindowTitle For Each p In vProcesses Console.WriteLine("{0}" & vbTab & "{1}" & vbTab & "{2}", p.ProcessName, p.Id, p.MainWindowTitle) Next
Eine kleine, aber feine Verbesserung meint der Autor.
Vereinfachte Implementierung von Eigenschaften
Eigenschaften können nun kompakter angelegt werden. Statt umständlich den folgenden Code schreiben zu müssen
Private _Name As String Property Name As String Get Return _Name End Get Set(ByVal value As String) _Name = value End Set End Property
reicht nun ein einfaches und übersichtliches:
Public Property Name As String
Der Compiler kümmert sich um den Rest. Auch Standardwerte können für eine solche vereinfachte Eigenschaft definiert werden: Public Property Name As String = „Thorsten Kansy“. Da Eigenschaften für Datenbindung etc. verstärk verwendet werden, kann mit dieser Verbesserung einiges an Tipparbeit gespart werden. Und als Nebeneffekt wird der Quellcode um einiges übersichtlicher.
Vereinfache Initialisierung von Auflistungen
Mit dem neuen From-Schlüsselwort können Auflistungen direkt bei der Initialsierung mit Inhalt gefüllt werden:
Dim names As New List(Of String) From {"Tick", "Trick", "Track"}
Ähnlich sieht es auch bei generischen Auflistungen wie dem Dictionary(Of T, T) aus
Dim days = New Dictionary(Of Integer, String) From
{{0, "Sonntag"}, {1, "Montag"}}
oder in Kombination mit der generischen List(Of T) einer vereinfachten Eigenschaft:
Public Property Items As List(Of String) =
New List(Of String) From {"Tick", "Trick", "Track"}
Ebenfalls eine Verbesserung, die schnell ihre Anhänger finden dürfte.
Mehrzeilige Lambda-Ausdrücke und Unterroutinen
Auch Lambda-Ausdrücke und Unterroutinen können sich nun übersichtlich über mehrere Zeilen verteilen. Mit dem Function– oder Sub-Schlüsselwort, je nachdem, ob ein Rückgabewert benötigt wird, ist deren Definition überall dort gültig, wo auch ein Delegat stehen kann. Die folgenden beiden Beispiele demonstrieren dies:
// Definition Dim Add2 = Function(x) Return x + 2 End Function // Aufruf Debug.WriteLine(Add2(2)) Die Ausgabe ist "4", was wenig überraschend ist. // Definition Dim LogMe = Sub(x) Debug.WriteLine(x) End Sub // Aufruf LogMe("Hallo Welt")
Solche Lambda-Ausdrücke können wie gewohnt dann auch als Parameter an den Stellen übergeben werden, an denen ein passender Delegat erwartet wird.
Equivalence Support (No-PIA-Feature)
Dieses Feature erlaubt es, Informationen über Schnittstellen direkt aus einer Assembly zu gewinnen. Auf diese Weise ist es möglich, direkt mit unterschiedlichen COM-Komponenten wie Microsoft Office zu arbeiten, ohne dass das eigene Programm neu kompiliert werden muss. Damit sind Primary Interop Assemblys (PIAs) überflüssig und ein großes Problem gelöst, da PIAs oftmals aufwärts, nicht aber abwärts kompatibel sind. In der Praxis bedeutete dies, dass auf dem PC, auf dem das Projekt kompiliert und die PIA erzeugt wurde, die älteste mögliche Version der COM-Komponente installiert sein musste, damit auch neuere Version funktionieren konnten – egal, ob die Schnittstelle kompatibel war oder nicht. Mit dem No-PIA-Feature muss nur noch die Kompatibilität gegeben sein.