Neue Features für VB.NET 10

In der Kürze liegt die Würze
Kommentare

Ende März 2010 sollen sie erscheinen: Visual Studio 2010, .NET Framework 4.0 und damit auch verbesserte Versionen der Sprachen C# und VB.NET. Das bedeutet, dass es Zeit ist, einen Blick auf die neuen VB.NET-Features zu werfen.

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.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -