Opérateur DirectCast (Visual Basic)

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

Notes

DirectCast n'utilise pas les routines d'assistance d'exécution Visual Basic pour la conversion, par conséquent, il peut en quelque sorte donner de meilleures performances que CType lors de la conversion vers et à partir du type de données Object.

Utilisez le mot clé DirectCast de la même façon que si vous utilisiez les mots clés Fonction CType (Visual Basic) et Opérateur TryCast (Visual Basic) . Vous fournissez une expression comme le premier argument et un type dans lequel le convertir comme deuxième argument. DirectCast requiert un héritage ou une relation d'implémentation entre les types de données des deux arguments. Cela signifie qu'un type doit hériter de l'autre ou l'implémenter.

Erreurs et échecs

DirectCast 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, l'exécution lève une erreur InvalidCastException.

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

Fonction CType (Visual Basic)

Tout type de données

Une conversion étendue ou restrictive doit être définie entre les deux types de données

Lève InvalidCastException

DirectCast

Tout type de données

Un type doit hériter de l'autre type ou l'implémenter

Lève InvalidCastException

Opérateur TryCast (Visual Basic)

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 illustre deux utilisations de DirectCast, une qui échoue au moment de l'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 run-time de q est Double. CType réussit parce que Double peut être converti en Integer. Toutefois, la première utilisation de DirectCast échoue au moment de l'exécution parce que le type d'exécution de Double n'a aucune relation d'héritage avec Integer, bien qu'une conversion existe. La deuxième utilisation de DirectCast réussit parce qu'elle convertit depuis le type Form vers le type Control duquel Form hérite.

Voir aussi

Référence

Convert.ChangeType

Concepts

Conversions étendues et restrictives (Visual Basic)

Conversions implicites et explicites (Visual Basic)