Liste de types (Visual Basic)

Spécifie les paramètres de type pour un élément de programmation générique.Les paramètres, lorsqu'il y en a plusieurs, sont séparés par des virgules.La syntaxe pour un paramètre de type est la suivante.

[genericmodifier] typename [ As constraintlist ]

Composants

Terme

Définition

genericmodifier

Facultatif.Peut être utilisé uniquement dans les interfaces et les délégués génériques.Vous pouvez déclarer un covariant de type en utilisant le mot clé Out ou un contravariant en utilisant le mot clé In.Consultez Covariance et contravariance (C# et Visual Basic).

typename

Obligatoire.Nom du paramètre de type.C'est un espace réservé, à remplacer par un type défini fourni par l'argument de type correspondant.

constraintlist

Facultatif.Liste des configurations requises qui contraignent le type de données qui peut être fourni pour typename.Si vous avez plusieurs contraintes, placez-les entre accolades ({ }) et séparez-les avec des virgules.Vous devez introduire la liste des contraintes avec le mot clé As.Utilisez As une seule fois, au début de la liste.

Notes

Chaque élément de programmation générique doit au moins prendre 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 le moment où un type générique doit être défini, consultez Types génériques en Visual Basic (Visual Basic).Pour plus d'informations sur les noms de paramètres de type, consultez Noms d'éléments déclarés (Visual Basic).

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.Utilisez Of 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 selon n'importe quelle combinaison :

    • N'importe quel nombre d'interfaces.Le type fourni doit implémenter toutes les interfaces de cette liste.

    • Une classe au plus.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.Cette opération est utile si vous contraignez un paramètre de type par une ou plusieurs interfaces.Un type qui implémente des interfaces n'expose pas nécessairement de constructeur, et selon le niveau d'accès d'un constructeur, il est possible que le code dans le type générique ne puisse pas y accéder.

    • Le mot clé Class ou Structure.Le mot clé Class contraint un paramètre de type générique à requérir 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 à requérir que tout argument de type qui lui est passé soit un type valeur, par exemple une structure, une énumération ou un type de données élémentaire.Vous ne pouvez pas inclure à la fois Class et Structure dans le même constraintlist.

    Le type fourni doit satisfaire chaque configuration requise 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, fournissez un type défini pour chaque paramètre de type.Le compilateur Visual Basic substitue ce type fourni pour chaque occurrence de typename dans l'élément générique.

  • Absence de contraintes. Si vous ne spécifiez pas de contraintes sur un paramètre de type, votre code est limité aux opérations et aux membres pris en charge par le Object, type de données pour ce paramètre.

Exemple

L'exemple suivant affiche 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

Étant donné que dictionary est générique, le code qui l'utilise peut créer divers objets à partir de celui-ci, chacun disposant des mêmes fonctionnalités, mais agissant sur un type de données différent.L'exemple suivant affiche une ligne de code qui crée un objet dictionary avec les entrées String et les clés Integer.

Dim dictInt As New dictionary(Of String, Integer)

L'exemple suivant affiche la définition 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

Voir aussi

Tâches

Comment : utiliser une classe générique (Visual Basic)

Référence

Of, clause (Visual Basic)

New, opérateur (Visual Basic)

Object, type de données

Function, instruction (Visual Basic)

Structure, instruction

Sub, instruction (Visual Basic)

In (modificateur générique) (Visual Basic)

Out (modificateur générique) (Visual Basic)

Concepts

Niveaux d'accès dans Visual Basic

Autres ressources

Covariance et contravariance (C# et Visual Basic)