Partager via


TryCast, opérateur (Visual Basic)

Introduit une opération de conversion de type qui ne lève pas d’exception.

Remarques

Si une tentative de conversion échoue et CTypeDirectCast lève une InvalidCastException erreur. Cela peut affecter les performances de votre application. TryCast renvoie Nothing, de sorte qu’au lieu d’avoir à gérer une exception possible, vous n’avez besoin que de tester le résultat retourné par rapport Nothingà .

Vous utilisez le mot clé de la TryCast même façon que vous utilisez la fonction CType et le mot clé de l’opérateur DirectCast . Vous fournissez une expression en tant que premier argument et un type pour le convertir en tant que deuxième argument. TryCast fonctionne uniquement sur les types de référence, tels que les classes et les interfaces. Elle 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.

Erreurs et échecs

TryCast génère une erreur du compilateur si elle détecte qu’aucune relation d’héritage ou d’implémentation n’existe. Mais l’absence d’erreur du compilateur ne garantit pas une conversion réussie. Si la conversion souhaitée est étroite, elle peut échouer au moment de l’exécution. Si cela se produit, TryCast retourne Nothing.

Mots clés de conversion

Une comparaison des mots clés de conversion de type est la suivante.

Mot-clé Types de données Relation d’argument Échec de l’exécution
CType, fonction 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 Jette InvalidCastException
Opérateur DirectCast Tous les types de données Un type doit hériter ou implémenter l’autre type Jette 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