Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
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 l’opérateur 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 |
|---|---|---|---|
| Opérateur CType | 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 typeFormControl, à partir de laquelle Form hérite.