DirectCast

Mise à jour : novembre 2007

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 CType, fonction et TryCast . Fournissez une expression comme premier argument et un type pour la convertir comme deuxième argument. DirectCast requiert 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 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.

Keyword

Types de données

Relation d'argument

Échec lors de l'exécution

CType, fonction

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

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 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 d'exécution 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

Concepts

Conversions étendues et restrictives

Conversions implicites et explicites

Référence

Convert.ChangeType