TryCast
Mise à jour : novembre 2007
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 nuire à la performance de votre application. TryCast retourne Nothing (Visual Basic), de telle façon qu'au lieu d'avoir à gérer une éventuelle exception, vous n'aurez qu'à tester le résultat obtenu pour Nothing.
Utilisez le mot clé TryCast de la même façon que si vous utilisiez les mots clés CType ou DirectCast. Vous fournissez comme premier argument une expression et comme deuxième argument le type cible de la conversion. TryCast fonctionne uniquement sur des types référence, tels que des classes et des 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