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.
Spécifie les paramètres de type d’un élément de programmation générique . Plusieurs paramètres sont séparés par des virgules. Voici la syntaxe d’un paramètre de type.
Syntaxe
[genericmodifier] typename [ As constraintlist ]
Pièces
| Terme | Définition |
|---|---|
genericmodifier |
Optionnel. Peut être utilisé uniquement dans les interfaces et délégués génériques. Vous pouvez déclarer un type covariant à l’aide du mot clé Out ou de la contravariant à l’aide du mot clé In . Voir Covariance et Contravariance. |
typename |
Obligatoire. Nom du paramètre de type. Il s’agit d’un espace réservé, à remplacer par un type défini fourni par l’argument de type correspondant. |
constraintlist |
Optionnel. Liste des exigences qui limitent le type de données pouvant être fourni pour typename. Si vous avez plusieurs contraintes, placez-les entre accolades ({ }) et séparez-les par des virgules. Vous devez introduire la liste de contraintes avec le mot clé As . Vous n’utilisez As qu’une seule fois, au début de la liste. |
Remarques
Chaque élément de programmation générique doit prendre au moins un paramètre de type. Un paramètre de type est un espace réservé pour un type spécifique (élément construit) que le code client spécifie lorsqu’il crée une instance du type générique. Vous pouvez définir une classe générique, une structure, une interface, une procédure ou un délégué.
Pour plus d’informations sur la définition d’un type générique, consultez Types génériques en Visual Basic. Pour plus d’informations sur les noms de paramètres de type, consultez Noms d’éléments déclarés.
Règles
Parenthèses. Si vous fournissez une liste de paramètres de type, vous devez l’inclure entre parenthèses, et vous devez introduire la liste avec le mot clé Of . Vous n’utilisez
Ofqu’une seule fois, au début de la liste.Contraintes. Une liste de contraintes sur un paramètre de type peut inclure les éléments suivants dans n’importe quelle combinaison :
N’importe quel nombre d’interfaces. Le type fourni doit implémenter chaque interface de cette liste.
Au plus une classe. Le type fourni doit hériter de cette classe.
Le mot clé
NewLe type fourni doit exposer un constructeur sans paramètre auquel votre type générique peut accéder. Cela est utile si vous limitez un paramètre de type par une ou plusieurs interfaces. Un type qui implémente des interfaces n’expose pas nécessairement un constructeur et, selon le niveau d’accès d’un constructeur, le code dans le type générique peut ne pas pouvoir y accéder.Mot
Classclé ouStructuremot clé. LeClassmot clé limite un paramètre de type générique pour exiger que tout argument de type passé à celui-ci soit un type référence, par exemple une chaîne, un tableau ou un délégué, ou un objet créé à partir d’une classe. LeStructuremot clé limite un paramètre de type générique pour exiger que tout argument de type passé à celui-ci soit un type valeur, par exemple une structure, une énumération ou un type de données élémentaire. Vous ne pouvez pas inclure les deuxClassetStructuredans le mêmeconstraintlist.
Le type fourni doit satisfaire toutes les exigences que vous incluez dans
constraintlist.Les contraintes sur chaque paramètre de type sont indépendantes des contraintes sur d’autres paramètres de type.
Comportement
Compile-Time Substitution. Lorsque vous créez un type construit à partir d’un élément de programmation générique, vous fournissez un type défini pour chaque paramètre de type. Le compilateur Visual Basic remplace ce type fourni pour chaque occurrence de
typenamel’élément générique.Absence de contraintes. Si vous ne spécifiez aucune contrainte sur un paramètre de type, votre code est limité aux opérations et aux membres pris en charge par le type de données objet pour ce paramètre de type.
Exemple 1
L’exemple suivant montre une définition squelette d’une classe de dictionnaire générique, y compris une fonction squelette pour ajouter une nouvelle entrée au dictionnaire.
Public Class dictionary(Of entryType, keyType As {IComparable, IFormattable, New})
Public Sub add(ByVal et As entryType, ByVal kt As keyType)
Dim dk As keyType
If kt.CompareTo(dk) = 0 Then
End If
End Sub
End Class
Exemple 2
Étant donné qu’il dictionary est générique, le code qui l’utilise peut créer une variété d’objets à partir de celui-ci, chacun ayant la même fonctionnalité, mais agissant sur un type de données différent. L’exemple suivant montre une ligne de code qui crée un dictionary objet avec String des entrées et Integer des clés.
Dim dictInt As New dictionary(Of String, Integer)
Exemple 3
L’exemple suivant montre la définition de squelette équivalente générée par l’exemple précédent.
Public Class dictionary
Public Sub Add(ByVal et As String, ByVal kt As Integer)
Dim dk As Integer
If kt.CompareTo(dk) = 0 Then
End If
End Sub
End Class