Die erweiterte Swap-Funktion Swaps tauscht nicht nur den Inhalt von zwei Variablen des gleichen Datentyps, sondern ermöglicht auch den Austausch zwischen verschiedenen Datentypen, wenn - z.T. auch abhängig vom Inhalt - eine Konvertierung möglich ist. Dabei kann es allerdings im Einzelfall zu Informationsverlusten kommen. Einige Beispiele: ' funktioniert, weil der Variableninhalt korrespondiert Dim ss As String = "false", bl As Boolean = True If Not Swaps(ss, bl) Then Stop ' funktioniert, aber mit Informationsverlust ' (Eingrenzungskonvertierung) Dim db As Double = 1.2345, ii As Integer = -5 If Not Swaps(db, ii) Then Stop ' funktioniert, weil String ein Referenztyp ist Dim obj As Object = Nothing, st As String = "unmöglich" If Not Swaps(obj, st) Then Stop ' funktioniert, weil Arrayvariable Referenzen sind ' und Rank sowie Typ identisch sind Dim arr(5, 2) As Integer, ar(60, 1) As Integer If Not Swaps(arr, ar) Then Stop ' funktioniert, weil ein identischer anonymer Typ vorliegt Dim ano1 = New With {.hh = 1, .uu = 2} Dim ano2 = New With {.hh = 5, .uu = 3} If Not Swaps(ano1, ano2) Then Stop ' Scheinbar konvertierbar / Swaps erkennt nicht, dass ' Konstanten als Parameter gegeben worden sind !!! Const fünf As Integer = 5 If Not Swaps(fünf, 6) Then Stop ' funktioniert, weil 'Object' variabel ist Dim obj1 As Object = "sowas" Dim obj2 As Object = 50000 If Not Swaps(obj1, obj2) Then Stop ' funktioniert, weil der Inhalt korrespondiert Dim bol As Boolean = True, byt As Byte = 0 If Not Swaps(bol, byt) Then Stop ' funktioniert, weil alles ausser 0 'true' wird byt = 20 If Not Swaps(bol, byt) Then Stop Und hier die neue Funktion Swaps: Public Function Swaps(Of T1, T2) ( _ ByRef Var1 As T1, ByRef Var2 As T2) As Boolean Try ' Versuch, den Variablen-Inhalt zu vertauschen Dim ivar2 As T2 = CType(Convert.ChangeType(Var1, GetType(T2)), T2) Dim ivar1 As T1 = CType(Convert.ChangeType(Var2, GetType(T1)), T1) ' Tausch hat geklappt - Rückgabe der Werte Var2 = ivar2 : Var1 = ivar1 Return True Catch ' war wohl nix Return False End Try End Function Dieser Tipp wurde bereits 9.131 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. |
Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... 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 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. |