Freigeben über


Typliste (Visual Basic)

Gibt die Typparameter für ein generisches Programmierelement an. Mehrere Parameter werden durch Kommas getrennt. Es folgt die Syntax für einen Typparameter.

Syntax

[genericmodifier] typename [ As constraintlist ]

Bestandteile

Begriff Definition
genericmodifier Wahlfrei. Kann nur in generischen Schnittstellen und Delegaten verwendet werden. Sie können einen Typkovariant deklarieren, indem Sie das Schlüsselwort "Out " oder "Contravariant" mithilfe des Schlüsselworts "In " verwenden. Siehe Kovarianz und Kontravarianz.
typename Erforderlich. Name des Typparameters. Dies ist ein Platzhalter, der durch einen definierten Typ ersetzt werden soll, der durch das entsprechende Typargument bereitgestellt wird.
constraintlist Wahlfrei. Liste der Anforderungen, die den Datentyp einschränken, für typenameden bereitgestellt werden kann. Wenn Sie über mehrere Einschränkungen verfügen, schließen Sie sie in geschweifte geschweifte Klammern ({ }) ein, und trennen Sie sie durch Kommas. Sie müssen die Einschränkungsliste mit dem Schlüsselwort "As " einführen. Sie verwenden As nur einmal, am Anfang der Liste.

Bemerkungen

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

Weitere Informationen zum Definieren eines generischen Typs finden Sie unter Generic Types in Visual Basic. Weitere Informationen zu Typparameternamen finden Sie unter "Deklarierte Elementnamen".

Regeln

  • Runde Klammern. Wenn Sie eine Typparameterliste angeben, müssen Sie sie in Klammern einschließen und die Liste mit dem Schlüsselwort "Of " einführen. Sie verwenden Of nur einmal, am Anfang der Liste.

  • Zwänge. Eine Liste von Einschränkungen für einen Typparameter kann die folgenden Elemente in einer beliebigen Kombination enthalten:

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

    • Höchstens eine Klasse. Der angegebene Typ muss von dieser Klasse erben.

    • das Schlüsselwort New. Der angegebene Typ muss einen parameterlosen Konstruktor verfügbar machen, auf den Ihr generischer Typ zugreifen kann. Dies ist nützlich, wenn Sie einen Typparameter durch eine oder mehrere Schnittstellen einschränken. Ein Typ, der Schnittstellen implementiert, macht nicht notwendigerweise einen Konstruktor verfügbar, und abhängig von der Zugriffsebene eines Konstruktors kann der Code innerhalb des generischen Typs möglicherweise nicht darauf zugreifen.

    • Entweder das Class Schlüsselwort oder das Structure Schlüsselwort. Das Class Schlüsselwort schränkt einen generischen Typparameter ein, um festzulegen, dass jedes Typargument, das an ihn übergeben wird, ein Verweistyp, z. B. eine Zeichenfolge, ein Array oder ein Delegat oder ein objekt, das aus einer Klasse erstellt wurde. Das Schlüsselwort schränkt einen generischen Typparameter ein, um festzulegen, dass jedes Typargument, das an ihn übergeben wird, ein Werttyp ist, z. B. eine Struktur, Eine Aufzählung oder einen elementaren Datentyp.The Structure keyword constrains a generic type to require that any type passed to it be a value type, for example a structure, enumeration, or elementary data type. Sie können nicht sowohl als auch ClassStructure nicht in dasselbe constraintlisteinschließen.

    Der angegebene Typ muss jede Anforderung erfüllen, die constraintlistSie einschließen.

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

Verhalten

  • Compile-Time Ersetzung. Wenn Sie einen konstruierten Typ aus einem generischen Programmierelement erstellen, geben Sie einen definierten Typ für jeden Typparameter an. Der Visual Basic-Compiler ersetzt den typ für jedes Vorkommen innerhalb des typename generischen Elements.

  • Fehlen von Einschränkungen. Wenn Sie keine Einschränkungen für einen Typparameter angeben, ist ihr Code auf die Vorgänge und Elemente beschränkt, die vom Objektdatentyp für diesen Typparameter unterstützt werden.

Beispiel 1

Das folgende Beispiel zeigt eine 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

Beispiel 2

Da dictionary es sich um einen generischen Code handelt, kann der Code, der es verwendet, eine Vielzahl von Objekten daraus erstellen, die jeweils dieselbe Funktionalität aufweisen, jedoch auf einen anderen Datentyp angewendet werden. 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)

Beispiel 3

Das folgende Beispiel zeigt die entsprechende Skelettdefinition, die vom vorherigen Beispiel generiert wird.

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