Typenliste (Visual Basic)

Gibt die Typparameter für ein generisches Programmierelement an. Mehrere Parameter werden durch Komma voneinander getrennt. Im Folgenden wird die Syntax für einen Typparameter gezeigt.

[genericmodifier] typename [ As constraintlist ]

Bestandteile

Ausdruck

Definition

genericmodifier

Optional. Kann nur in generischen Schnittstellen und Delegaten verwendet werden. Sie können einen Typ-Covariant mit dem Out-Schlüsselwort oder einen Contravariant mit dem In-Schlüsselwort deklarieren. Weitere Informationen finden Sie unter Kovarianz und Kontravarianz (C# und Visual Basic).

typename

Erforderlich. Name des Typparameters. Dies ist ein Platzhalter. Dieser Platzhalter wird durch einen definierten Typ ersetzt, der vom entsprechenden Typargument angegeben wird.

constraintlist

Optional. Liste mit Anforderungen, die den Datentyp einschränken, der für typename angegeben werden kann. Wenn Sie mehrere Einschränkungen haben, schließen Sie diese in geschweifte Klammern ({ }) ein, und trennen Sie sie durch Kommas. ‎Leiten Sie die Einschränkungsliste mit dem As-Schlüsselwort ein. As wird nur einmal, und zwar am Anfang der Liste, verwendet.

Hinweise

Jedes generische Programmierelement muss mindestens einen Typparameter annehmen. Ein Typparameter ist ein Platzhalter für einen bestimmten Typ (ein konstruiertes Element), der beim Erstellen einer Instanz des generischen Typs vom Clientcode angegeben wird. Sie können einen generischen Delegaten oder eine generische Klasse, Struktur, Schnittstelle oder Prozedur definieren.

Weitere Informationen darüber, wann ein generischer Typ definiert wird, finden Sie unter Generische Typen in Visual Basic (Visual Basic). Weitere Informationen zu Typparameternamen finden Sie unter Namen deklarierter Elemente (Visual Basic).

Regeln

  • Runde Klammern. Bei Angabe einer Liste mit Typparametern müssen Sie die Liste in runde Klammern einfügen. Außerdem müssen Sie die Liste mit dem Of-Schlüsselwort einleiten. Of wird nur einmal, und zwar am Anfang der Liste, verwendet.

  • Einschränkungen. Eine Liste mit Einschränkungen für einen Typparameter kann die folgenden Elemente in beliebiger Kombination enthalten:

    • Beliebige Anzahl von Schnittstellen. Der angegebene Typ muss jede Schnittstelle in dieser Liste implementieren.

    • Maximal eine Klasse. Der angegebene Typ muss von dieser Klasse erben.

    • Das New-Schlüsselwort. Der angegebene Typ muss einen parameterlosen Konstruktor verfügbar machen, auf den der generische Typ zugreifen kann. Dies ist hilfreich, wenn Sie einen Typparameter um eine oder mehrere Schnittstellen einschränken. Ein Typ, der Schnittstellen implementiert, macht nicht unbedingt einen Konstruktor verfügbar. Außerdem kann der Code innerhalb des generischen Typs je nach der Zugriffsebene eines Konstruktors unter Umständen nicht auf den Konstruktor zugreifen.

    • Entweder das Class-Schlüsselwort oder das Structure-Schlüsselwort. Das Class-Schlüsselwort schränkt einen generischen Typparameter so ein, dass jedes an ihn übergebene Typargument ein Verweistyp sein muss, beispielsweise eine Zeichenfolge, ein Array oder ein Delegat bzw. ein aus einer Klasse erstelltes Objekt. Das Structure-Schlüsselwort schränkt einen generischen Typparameter so ein, dass jedes an ihn übergebene Typargument ein Werttyp sein muss, beispielsweise eine Struktur, eine Enumeration oder ein elementarer Datentyp. Class und Structure dürfen nicht zusammen in einer constraintlist angegeben werden.

    Der angegebene Typ muss jeder Anforderung genügen, die Sie in constraintlist einfügen.

    Einschränkungen für die einzelnen Typparameter sind unabhängig von Einschränkungen für andere Typparameter.

Verhalten

  • Typersetzung zur Kompilierungszeit. Wenn Sie einen konstruierten Typ eines generischen Programmierelements erstellen, geben Sie für jeden Typparameter einen definierten Typ an. Der Visual Basic-Compiler ersetzt alle Vorkommen von typename im generischen Element durch diesen angegebenen Typ.

  • Keine Einschränkungen. Wenn Sie für einen Typparameter keine Einschränkungen angeben, ist der Code auf die Operationen und Member beschränkt, die vom Object-Datentyp für diesen Typparameter unterstützt werden.

Beispiel

Das folgende Beispiel zeigt die Skelettdefinition einer generischen Wörterbuchklasse, einschließlich einer Skelettfunktion zum Hinzufügen eines neuen Eintrags zum Wörterbuch.

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

Weil das dictionary generisch ist, kann der Code, der es verwendet, eine Vielzahl von Objekten daraus erstellen. Dabei haben alle diese Objekte die gleiche Funktionalität, werden aber auf verschiedene Datentypen angewendet. Das folgende Beispiel zeigt eine Codezeile, die ein dictionary-Objekt mit String-Einträgen und Integer-Schlüsseln erstellt.

Dim dictInt As New dictionary(Of String, Integer)

Das folgende Beispiel zeigt die entsprechende, vom vorangehenden Beispiel generierte Skelettdefinition.

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

Siehe auch

Aufgaben

Gewusst wie: Verwenden einer generischen Klasse (Visual Basic)

Referenz

Of-Klausel (Visual Basic)

Operator New (Visual Basic)

Object-Datentyp

Function-Anweisung (Visual Basic)

Structure-Anweisung

Sub-Anweisung (Visual Basic)

In (generischer Modifizierer) (Visual Basic)

Out (generischer Modifizierer) (Visual Basic)

Konzepte

Zugriffsebenen in Visual Basic

Weitere Ressourcen

Kovarianz und Kontravarianz (C# und Visual Basic)