Opérateur TryCast (Visual Basic)
Introduit une opération de conversion de type qui ne lève pas d’exception.
Notes
Si une tentative de conversion échoue, CType
et DirectCast
lèvent une erreur InvalidCastException. Cela peut affecter les performances de votre application. TryCast
retourne Nothing, de sorte qu’au lieu d’avoir à gérer une exception possible, il vous suffit de tester le résultat retourné sur Nothing
.
Vous utilisez le mot clé TryCast
de la même façon que vous utilisez la fonction CType et le mot clé d’opérateur DirectCast. Vous fournissez une expression comme premier argument et un type pour la convertir en tant que deuxième argument. TryCast
fonctionne uniquement sur les types référence, tels que les classes et les interfaces. Il nécessite une relation d’héritage ou d’implémentation entre les deux types. Cela signifie qu’un type doit hériter ou implémenter l’autre type.
Erreurs et défaillances
TryCast
génère une erreur du compilateur s’il détecte qu’aucune relation d’héritage ou d’implémentation n’existe. Toutefois, l’absence d’erreur du compilateur ne garantit pas la réussite de la conversion. Si la conversion souhaitée est restrictive, elle peut échouer au moment de l’exécution. Si cela se produit, TryCast
retourne Nothing.
Mots clés de conversion
Voici une comparaison des mots-clés de conversion de type.
Mot clé | Types de données | Relation d’argument | Échec de l’exécution |
---|---|---|---|
CType Function | Tous les types de données | La conversion d’élargissement ou de réduction doit être définie entre les deux types de données | Lève InvalidCastException |
DirectCast, opérateur | Tous les types de données | Un type doit hériter ou implémenter l’autre type | Lève InvalidCastException |
TryCast |
Types de référence uniquement | Un type doit hériter ou implémenter l’autre type | Renvoie Nothing |
Exemple
L'exemple suivant montre comment utiliser 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