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

Siehe auch