Bei der Verarbeitung von Benutzereingaben ist es entscheidend, Typumwandlungsfehler zu vermeiden, wenn der Benutzer beispielsweise keinen Zahleneingabe in TextBox tätigt. Dies ist wichtig, um die Stabilität der Anwendung zu gewährleisten.
Hintergrund des Themas:
In VB6 und VB.NET führten Typumwandlungsfehler (zum Beispiel mit CInt oder Val) zu Abstürzen. Später wurden sicherere Methoden wie Integer.TryParse eingeführt.
Problem:
Wenn versucht wird, ungültige Daten (Buchstaben, Sonderzeichen, leere Zeichenfolgen) umzuwandeln, werfen die Standardmethoden (CInt, CDbl) Ausnahmen. Infolgedessen kann die Anwendung abstürzen.
Lösung:
Für eine sichere Umwandlung verwenden Sie TryParse. Es gibt einen booleschen Erfolg der Umwandlung von Zeichenfolge in Zahl zurück und verhindert Ausnahmen.
Beispielcode:
Dim input As String = TextBox1.Text Dim number As Integer If Integer.TryParse(input, number) Then MessageBox.Show($"Sie haben die Zahl eingegeben: {number}") Else MessageBox.Show("Fehler: Keine Zahl eingegeben") End If
Wichtige Merkmale:
TryParse wirft bei Fehlschlägen keine AusnahmenWas gibt die Funktion Val("123abc") zurück und warum kann das gefährlich sein?
Val("123abc") gibt 123 zurück und ignoriert nicht-numerische Zeichen nach der Zahl, was zu Fehlern führen kann, wenn der Benutzer versehentlich ein zusätzliches Zeichen eingibt.
Kann eine leere Zeichenfolge mit CInt("") umgewandelt werden?
Nein, die Funktion wirft eine Ausnahme InvalidCastException.
Welchen Ansatz sollte man für Fließkommazahlen unter Berücksichtigung der Lokalisierung wählen?
Verwenden Sie Double.TryParse mit Angabe von CultureInfo, da in einigen Kulturen das Komma , der Dezimaltrennzeichen ist, in anderen der Punkt ..
Dim value As Double Dim isParsed = Double.TryParse("3,14", NumberStyles.Any, CultureInfo.CurrentCulture, value)
Val, um eine Zahl mit unkontrollierbarem Ergebnis zu erhaltenCInt ohne Überprüfung des InhaltsEin Entwickler wandelt den Text aus dem Feld direkt in eine Zahl um: Dim n = CInt(TextBox1.Text) ohne Überprüfung.
Vorteile:
Nachteile:
Es wird TryParse verwendet, um den Benutzer über ungültige Eingaben zu informieren (siehe oben stehendes Beispiel).
Vorteile:
Nachteile: