Delen via


TryCast-operator (Visual Basic)

Introduceert een typeconversiebewerking die geen uitzondering genereert.

Opmerkingen

Als een poging tot conversie mislukt CType en DirectCast beide een InvalidCastException fout veroorzaken. Dit kan de prestaties van uw toepassing nadelig beïnvloeden. TryCast retourneert niets, zodat u in plaats van een mogelijke uitzondering alleen het geretourneerde resultaat op Nothingte testen.

U gebruikt het TryCast trefwoord op dezelfde manier als u de CType-functie en het trefwoord DirectCast-operator gebruikt. U geeft een expressie op als het eerste argument en een type waarnaar u deze wilt converteren als het tweede argument. TryCast werkt alleen op referentietypen, zoals klassen en interfaces. Hiervoor is een overname- of implementatierelatie tussen de twee typen vereist. Dit betekent dat het ene type moet overnemen van of het andere moet implementeren.

Fouten en fouten

TryCast genereert een compilerfout als wordt gedetecteerd dat er geen overname- of implementatierelatie bestaat. Maar het ontbreken van een compilerfout garandeert geen geslaagde conversie. Als de gewenste conversie wordt beperkt, kan deze tijdens de uitvoering mislukken. Als dit gebeurt, TryCast wordt niets geretourneerd.

Conversietrefwoorden

Een vergelijking van de trefwoorden voor typeconversie is als volgt.

Trefwoord Data types Argumentrelatie Runtimefout
CType, functie Alle gegevenstypen Verbreking of narrowing-conversie moet worden gedefinieerd tussen de twee gegevenstypen Gooit InvalidCastException
DirectCast-operator Alle gegevenstypen Het ene type moet overnemen van of het andere type implementeren Gooit InvalidCastException
TryCast Alleen referentietypen Het ene type moet overnemen van of het andere type implementeren Retourneert niets

Opmerking

In het volgende voorbeeld ziet u hoe u deze kunt gebruiken 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

Zie ook