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 ]
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.
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