Vortrag: Visual Basic Neuerungen Autor : Dennis Hoyer
Die Einführung von Visual Studio war an Anfang Die neue Version der neuen IDE brachte zu dem Neuerungen in der Sprache VB mit sich. Diese sind unteranderem: Lambda Ausdrücke Erweiterung der Nullable Datentypen IF – Anweisung Erweiterungs – Methoden Anonyme Klassen Objektinitilaisierung Typen Angabe Einführung
Lambda Ausdrücke helfen beispielsweise bei der Übergabe von Delegaten oder relativ kleinen Funktionen. Folgendes Beispiel soll Ihnen den Vorgang von Früher(< VB2008) mit Heute (VB2008) verdeutlichen. Früher : Sub main() Dim a as integer = 1 Dim b as integer = 2 x = Rechne(a,b) Console.WriteLine(x) End Sub Function Rechne( a as integer, b as integer ) as integer Return a *b End Function Es müssen zwei Funktionen definiert werden. Lambda Ausdrücke – 1/2
Heute : Sub main() Dim rechnen Func(Of Integer, Integer)= _ Function(wert1 As Integer, wert2 As Integer) _ wert1 * wert Dim a As Integer = 1 Dim b As Integer = 2 Console.WriteLine(rechnen(a, b)) End Sub Die Definition des Delegaten ist innerhalb einer Zeile, sowie deren Codeschnipsel. Für relative kleine Funktionen muss somit kein unnötiger 5 Zeiler geschrieben werden. Lambda Ausdrücke – 2/2
Wer vom VB 2003 oder früher nach VS 2008 gewechselt ist, werden Nullable Daten- Typen nicht bekannt sein, daher ein kurzer Überblick. Bei Referenztypen ist jedem bekannt, dass diese NULL bzw. NOTHING sein können. Bei einem Wertetyp wie Integer war dies bisher nicht möglich, dies hat sich bereits mit VS 2005 geändert. Bei VS 2008 ist zusätzlich eine Vereinfachung der Definition integriert worden. Definition : - Langform Dim a As New System.Nullable(Of Integer) - Kurzform Dim a As Integer? = 11 Erweiterung der Nullable Datentypen
Wie bereits in c# integriert hat VB.net jetzt auch diese Erweiterung bekommen. If Anweisungen können zukünftig in einer Zeile formuliert Werden. Dim bMustekunde as boolean = _ If(w = Mustermann, True, False) If Anweisung
Die Erweiterungsmethoden sind ein Zusatz, die das LINQ mitbringt. LINQ benötigt diese Funktionalität um bereits bestehende nicht ableitbare Klassen zu erweitern. Damit ist das Geheimnis aber auch bereits gelüftet. Erweiterungsmethoden erlauben bestehende Klassen zu erweitern, obwohl von diesen keine Ableitung erzeugt werden kann. Hier ein Beispiel Public Module Global _ Public Function IsLastDayOfMonth(ByVal d As date) As Boolean Return d = ( _ new date(d.year,d.month,1).addmonth(1).addDay(-1)) End Function End Module Erweiterungs – Methoden – 1/2
Private Sub main Dim d as new date(2008,6,30) d.IsLastDayOfMonth End Sub Jede Instanz des Datentyps Date wurde erweitert um die Funktion IsLastDayOfMonth Erweiterungs – Methoden – 2/2
Eine anonyme Klasse erlaubt das Erstellen, sowie das Definieren einer Klasse innerhalb einer Codezeile. Vorteil liegt wiederum in der geringen Codeerstellung für den Softwareentwickler. Die Aufwendige Klassendefinition von früher lassen wir jetzt unnötiger Weise fallen, stattdessen zeige ich Ihnen die neue Möglichkeit. Dim pkw = New With {Key.Hersteller= Tiger Motors", _.PS = 119,.Schaltgetriebe = False} Wie zu erkennen, erfolgt die Definition der Properties innerhalb einer Codezeile. Im obigen Beispiel wurde kein Datentyp eingegeben, dies ist Wiederum eine Neuerung in VB.NET VB erkennt den Datentyp selbst. Anonyme Klassen
Die ist eine weitere Verienfachung für den Softwareentwickler. Wie beim vorher- gehenden wird Zeit beim Codieren ein gespart. Diese beiden Features sind auch im ungefähr gleichen Kontext zu sehen, den beim Objektinitialisieren geht es um eine verkürzte Initialisierung. Folgendes Beispiel zeigt es uns auf : Privat class Pkw Public Property Hersteller as string(…) Public Property PS as integer (…) Public Property Schaltgetriebe as boolean (…) End class Sub main() Dim auto As New Pkw With {.Hersteller= Tiger Motors",.PS = 119, _.Schaltgetriebe=True} End sub Im Gegensatz zur vorherigen Erweiterung muss hier die Klasse ausführlich Definiert werden. Allerdings wird das Objekt mit seinen Eigenschaften in einer Codezeile initialisiert. Objektinitialisierungen
Bitte bedenken Sie jedoch bei allen neuen Features von VB.net 2008, dass diese die Codeerstellung erweitern und ggf. beschleunigen, aber es trägt nicht immer zur Lesbarkeit und zum Verstehen des Codes bei. In einer Teamformation sollten Sie sich im vorhinein Gedanken zu diesen Themen machen und gemeinsam entscheiden ob Sie die Erweiterungen nutzen wollen. Ansonsten holt VB.net damit wieder ein wenig zu C# auf. Analyse