Partager via


Opérateur DirectCast (Visual Basic)

Introduit une opération de conversion de type basée sur l’héritage ou l’implémentation.

Remarques

DirectCast n’utilise pas les routines d’assistance au moment de l’exécution Visual Basic pour la conversion. Elle peut donc fournir des performances légèrement meilleures que CType lors de la conversion vers et à partir du type Objectde données.

Vous utilisez le DirectCast mot clé similaire à la façon dont vous utilisez la fonction CType et le mot clé TryCast Operator . Vous fournissez une expression en tant que premier argument et un type pour le convertir en tant que deuxième argument. DirectCast nécessite une relation d’héritage ou d’implémentation entre les types de données des deux arguments. Cela signifie qu’un type doit hériter ou implémenter l’autre.

Erreurs et échecs

DirectCast 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, le runtime lève une InvalidCastException erreur.

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
DirectCast Tous les types de données Un type doit hériter ou implémenter l’autre type Jette InvalidCastException
TryCast, opérateur Types de référence uniquement Un type doit hériter ou implémenter l’autre type Renvoie Nothing

Exemple :

L’exemple suivant illustre deux utilisations de , une qui échoue au moment de DirectCastl’exécution et une qui réussit.

Dim q As Object = 2.37
Dim i As Integer = CType(q, Integer)
' The following conversion fails at run time
Dim j As Integer = DirectCast(q, Integer)
Dim f As New System.Windows.Forms.Form
Dim c As System.Windows.Forms.Control
' The following conversion succeeds.
c = DirectCast(f, System.Windows.Forms.Control)

Dans l’exemple précédent, le type d’exécution est qDouble. CType réussit, car Double il peut être converti en Integer. Toutefois, la première DirectCast échoue au moment de l’exécution, car le type d’exécution n’a Double aucune relation d’héritage avec Integer, même si une conversion existe. La seconde DirectCast réussit, car elle se convertit de type en typeControlForm, à partir de laquelle Form hérite.

Voir aussi