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 Nothing
te 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