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.455 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. |
sevZIP40 Pro DLL Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Tipp des Monats September 2024 Dieter Otter Übergabeparameter: String oder Array? Mit der IsArray-Funktion lässt sich prüfen, ob es sich bei einem Übergabeparameter an eine Prozedur um ein Array oder einer "einfachen" Variable handelt. Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |