TryCast-Operator (Visual Basic)
Führt einen Typkonvertierungsvorgang ein, der keine Ausnahme auslöst.
Bemerkungen
Wenn eine versuchte Konvertierung fehlschlägt CType
und DirectCast
beide einen InvalidCastException-Fehler auslösen. Dies kann sich negativ auf die Leistung Ihrer Anwendung auswirken. TryCast
gibt nichts zurück, sodass Sie anstelle einer möglichen Ausnahme nur das zurückgegebene Ergebnis gegen testen müssenNothing
.
Sie verwenden das TryCast
-Schlüsselwort auf die gleiche Weise wie die CType-Funktion und das DirectCast-Operator-Schlüsselwort . Sie geben einen Ausdruck als erstes Argument und einen Typ an, in den er als zweites Argument konvertiert werden soll. TryCast
funktioniert nur bei Verweistypen, z. B. Klassen oder Schnittstellen. Es erfordert eine Vererbungs- oder Implementierungsbeziehung zwischen den beiden Typen. Dies bedeutet, dass ein Typ von dem anderen erben oder implementieren muss.
Fehler und Ausfälle
TryCast
generiert einen Compilerfehler, wenn erkannt wird, dass keine Vererbungs- oder Implementierungsbeziehung vorhanden ist. Das Fehlen eines Compilerfehlers garantiert jedoch keine erfolgreiche Konvertierung. Wenn die gewünschte Konvertierung eingeschränkt wird, kann sie zur Laufzeit fehlschlagen. Wenn dies passiert, gibt TryCast
nichtszurück.
Konvertierungsschlüsselwörter
Ein Vergleich der Schlüsselwörter für die Typkonvertierung sieht wie folgt aus.
Schlüsselwort | Datentypen | Argumentbeziehung | Laufzeitfehler |
---|---|---|---|
CType Function | Beliebige Datentypen | Die erweiternde oder einschränkende Konvertierung muss zwischen den beiden Datentypen definiert werden | Löst InvalidCastException aus |
DirectCast-Operator | Beliebige Datentypen | Ein Typ muss vom anderen Typ erben oder implementieren | Löst InvalidCastException aus |
TryCast |
Nur Verweistypen | Ein Typ muss vom anderen Typ erben oder implementieren | Gibt Nothing zurück |
Beispiel
Das folgende Beispiel veranschaulicht die Verwendung von TryCast
.
Function PrintTypeCode(ByVal obj As Object) As String
Dim objAsConvertible As IConvertible = TryCast(obj, IConvertible)
If objAsConvertible Is Nothing Then
Return obj.ToString() & " does not implement IConvertible"
Else
Return "Type code is " & objAsConvertible.GetTypeCode()
End If
End Function