Partager via


Liste de types (Visual Basic)

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é ou Structure mot clé. Le Class 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. Le Structure 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 deux Class et Structure dans le même constraintlist.

    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

Voir aussi