Heute möchten wir Ihnen eine der Neuerungen von VB 2005 (.NET Framework 2.0) vorstellen. Es handelt sich hierbei um die Möglichkeit eigene generische Methoden zu erstellen. Das Ganze soll am Beispiel einer einfachen SWAP-Funktion zum Vertauschen zweier Variablen-Inhalte verdeutlicht werden. Nachfolgend eine Prozedur, die zwei INTEGER-Variablen miteinander tauscht: Public Swap(ByRef Var1 As Integer, ByRef Var2 As Integer) Dim Temp As Integer = Var1 Var1 = Var2 Var2 = Temp End Sub Benötigt man diese Funktion bspw. auch für Strings, Long etc. müsste man hierfür jeweils eigene "Swap"-Funktionen erstellen, bei denen dann die Parameter-Deklaration entsprechend auf String, LongInteger etc. festgelegt ist. Nun kommen wir zu der oben erwähnten Neuerung im .NET Framework 2.0 - den Generics. Das .NET Framework 2.0 erlaubt es uns, Methoden zu erstellen, bei denen der Datentyp vom Compiler per Typ-Ableitung aus den beim Funktionsaufruf übergebenen Parametern ermittelt wird - und zwar durch Verwendung der Of-Klausel: Public Sub Swap(Of Type)(ByRef Var1 As Type, ByRef Var2 As Type) ' Variablen vertauschen Dim Temp As Type = Var1 Var1 = Var2 Var2 = Temp End Sub Die SWAP-Funktion kann nun mit einem beliebigen Datentyp aufgerufen werden! ' 2 Integer-Werte vertauschen Dim Var1 As Integer = 1 Dim Var2 As Integer = 3 Swap(Of Integer)(a, b) ' 2 String-Werte vertauschen Dim Var1 As String = "A" Dim Var2 As String = "Z" Swap(Of String)(a, b) Anmerkungen und Ergänzungen von Manfred Bohn, 05.02.09 ' 2 Integer-Werte vertauschen Dim Int1 As Integer = 1, Int2 As Integer = 3 Swap(Int1, Int2) ' Auch der ausführliche Aufruf ist möglich. die explizite Angabe des Datentyps ' ist aber bei ByRef-Parametern redundant: Swap(Of Integer)(Int1, Int2) ' 2 String-Referenzen vertauschen Dim Str1 As String = "A" Dim Str2 As String = "Z" Swap(Str1, Str2) ' 2 Referenzen auf Bitmap-Objekte vertauschen Dim bmp1 As New Drawing.Bitmap("pic1.jpg") Dim bmp2 As New Drawing.Bitmap("pic2.jpg") Swap(Bmp1, Bmp2) ' Folgender Programmierfehler wird nicht erkannt ' und er löst auch keine Ausnahme aus: Const sieben as Short = 7 Swap(sieben, CShort(8)) Die generische Swap-Funktion kann auch bei OPTION STRICT ON verwendet werden, weil die Typ-Ableitung und Typ-Überprüfung bereits beim Kompilieren vorgenommen wird. Das unterscheidet sie von der "klassischen" Variante der allgemeinen Swap-Funktion, die mit Object-Parametern ausgestattet ist und deren Arbeitsweise deshalb erst zur Laufzeit ermittelt werden kann. 'SwapObj' setzt die Freigabe der späten Bindung durch OPTION STRICT OFF voraus und benötigt ein Vielfaches an Rechenzeit. Public Sub SwapObj(ByRef Var1 As Object, ByRef Var2 As Object) ' Variablen vertauschen Dim Temp As Object = Var1 Var1 = Var2 Var2 = Temp End Sub 'SwapObj' erlaubt beim Tauschen allerdings auch Konvertierungen des Datentyps: Dim Integ As Integer = 1000, Ulng As ULong = 20000 SwapObj(Integ, Ulng) Eine generische Swap-Funktion, die Datentyp-Konvertierungen zulässt, findet man im VB@rchiv-Tipp Erweiterte Swap-Funktion. Dieser Tipp wurde bereits 8.293 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
TOP! Unser Nr. 1 Neu! sevDataGrid 3.0 Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |