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 |
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 |
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.