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

Voir aussi