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 tous deux une erreur InvalidCastException. Cela peut affecter de façon défavorable la performance de votre application. TryCast retourne Nothing (Visual Basic), afin qu'au lieu de devoir gérer une exception possible, vous devez seulement tester le résultat retourné par rapport à Nothing.
Utilisez le mot clé TryCast de la même façon que si vous utilisiez les mots clés Fonction CType (Visual Basic) et Opérateur DirectCast (Visual Basic) . Vous fournissez une expression comme le premier argument et un type dans lequel le convertir comme deuxième argument. TryCast fonctionne uniquement sur des types références, tels que les classes et les interfaces. Une relation d'héritage ou d'implémentation entre les deux types est requise. Cela signifie qu'un type doit hériter de l'autre ou l'implémenter.
Erreurs et échecs
TryCast génère une erreur du compilateur s'il détecte qu'il n'y a aucune relation d'héritage ou d'implémentation. Cependant, l'absence d'erreur du compilateur ne garantit pas une conversion réussie. Si la conversion souhaitée est restrictive, elle peut échouer au moment de l'exécution. Le cas échéant, TryCast retourne Nothing (Visual Basic).
Mots clés de conversion
Une comparaison des mots clés de conversion de type se présente comme suit.
Mot clé |
Types de données |
Relation d'argument |
Échec lors de l'exécution |
Tout type de données |
Une conversion étendue ou restrictive doit être définie entre les deux types de données |
Lève InvalidCastException |
|
Tout type de données |
Un type doit hériter de l'autre type ou l'implémenter |
Lève InvalidCastException |
|
TryCast |
Types référence uniquement |
Un type doit hériter de l'autre type ou l'implémenter |
Retourne Nothing (Visual Basic) |
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