Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
Of
qu’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é
New
Le 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
Class
clé ouStructure
mot clé. LeClass
mot 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. LeStructure
mot 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 deuxClass
etStructure
dans 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
typename
l’é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