TryCast-Operator (Visual Basic)

Führt einen Typkonvertierungsvorgang ein, der keine Ausnahme auslöst.

Bemerkungen

Wenn bei einer versuchten Konvertierung ein Fehler auftritt und CType DirectCast beide einen Fehler InvalidCastException auslösen. Dies kann sich negativ auf die Leistung Ihrer Anwendung auswirken. TryCast gibt Nothingzurück, sodass Sie nicht eine mögliche Ausnahme behandeln müssen, sondern nur das zurückgegebene Ergebnis mit testen Nothing müssen.

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 für Verweistypen, z. B. Klassen und Schnittstellen. Sie erfordert eine Vererbungs- oder Implementierungsbeziehung zwischen den beiden Typen. Dies bedeutet, dass ein Typ von erben oder den anderen implementieren muss.

Fehler und Fehler

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 ein schmaler ist, kann zur Laufzeit ein Fehler auftraten. In diesem Fall gibt TryCast Nothing zurück.

Konvertierungsschlüsselwörter

Ein Vergleich der Typkonvertierungsschlüsselwörter lautet wie folgt.

Schlüsselwort Datentypen Argumentbeziehung Laufzeitfehler
CType Function Beliebige Datentypen Die Widening- oder Narrowing-Konvertierung muss zwischen den beiden Datentypen definiert werden. Löst InvalidCastException
DirectCast-Operator Beliebige Datentypen Ein Typ muss von erben oder den anderen Typ implementieren. Löst InvalidCastException
TryCast Nur Verweistypen Ein Typ muss von erben oder den anderen Typ 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