Liste de types (Visual Basic)
Spécifie les paramètres de type pour un élément de programmation générique. Les paramètres multiples sont séparés par des virgules. Voici la syntaxe d’un paramètre de type.
Syntaxe
[genericmodifier] typename [ As constraintlist ]
Éléments
Terme | Définition |
---|---|
genericmodifier |
Optionnel. Peut être utilisé uniquement dans les interfaces et les délégués génériques. Vous pouvez déclarer un covariant de type à l’aide du mot clé Out ou du contravariant à l’aide du mot clé In. Consultez 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 qui peut être fourni pour typename . Si vous avez plusieurs contraintes, placez-les dans des 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. |
Notes
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 (un é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, une structure, une interface, une procédure ou un délégué générique.
Pour plus d’informations sur la définition d’un type générique, consultez Types génériques 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 la placer 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.
Une classe au maximum. 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 être en mesure d’y accéder.Soit le mot clé
Class
, soit le mot cléStructure
. Le mot cléClass
contraint un paramètre de type générique à exiger que tout argument de type qui lui est passé 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. Le mot cléStructure
contraint un paramètre de type générique à 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 inclureClass
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 les autres paramètres de type.
Comportement
Substitution au moment de la compilation. 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
dans 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 Object (type de données) pour ce paramètre de type.
Exemple 1
L’exemple suivant montre une définition de squelette d’une classe de dictionnaire générique, y compris une fonction de 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
Puisque dictionary
est générique, le code 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 objet dictionary
avec des entrées String
et des clés Integer
.
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