Freigeben über


Typenliste

Aktualisiert: November 2007

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

typename [ As constraintlist ]

Bestandteile

  • 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. Weitere Informationen zu Typparameternamen finden Sie unter Namen deklarierter Elemente.

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 (Visual Basic)-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 (Visual Basic)-Schlüsselwort oder das Structure (Visual Basic)-Schlüsselwort. Wenn Sie Class einfügen, muss der angegebene Typ ein Verweistyp sein. Wenn Sie Structure einfügen, muss der angegebene Typ ein Werttyp sein. 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

Konzepte

Zugriffsebenen in Visual Basic

Referenz

Of

New (Visual Basic)

Class (Visual Basic)

Structure (Visual Basic)

Object-Datentyp

Function-Anweisung (Visual Basic)

Structure-Anweisung

Sub-Anweisung (Visual Basic)