Delen via


Typelijst (Visual Basic)

Hiermee geeft u de typeparameters voor een algemeen programmeerelement. Meerdere parameters worden gescheiden door komma's. Hier volgt de syntaxis voor één typeparameter.

Syntaxis

[genericmodifier] typename [ As constraintlist ]

generator

Term Definitie
genericmodifier Optioneel. Kan alleen worden gebruikt in algemene interfaces en gemachtigden. U kunt een type covariant declareren met behulp van het trefwoord Out of contravariant met behulp van het trefwoord In . Zie Covariantie en Contravariantie.
typename Vereist. Naam van de typeparameter. Dit is een tijdelijke aanduiding die moet worden vervangen door een gedefinieerd type dat wordt opgegeven door het bijbehorende typeargument.
constraintlist Optioneel. Lijst met vereisten die het gegevenstype beperken waarvoor kan worden opgegeven typename. Als u meerdere beperkingen hebt, plaatst u ze tussen accolades ({ }) en scheidt u ze met komma's. U moet de lijst met beperkingen introduceren met het trefwoord As . U gebruikt As slechts één keer aan het begin van de lijst.

Opmerkingen

Elk algemeen programmeerelement moet ten minste één typeparameter hebben. Een typeparameter is een tijdelijke aanduiding voor een specifiek type (een samengesteld element) dat door de clientcode wordt opgegeven wanneer er een exemplaar van het algemene type wordt gemaakt. U kunt een algemene klasse, structuur, interface, procedure of gemachtigde definiëren.

Zie Algemene typen in Visual Basic voor meer informatie over wanneer u een algemeen type definieert. Zie Namen van gedeclareerde elementen voor meer informatie over typeparameternamen.

Regels

  • Haakjes. Als u een typeparameterlijst opgeeft, moet u deze tussen haakjes sluiten en moet u de lijst introduceren met het trefwoord Van . U gebruikt Of slechts één keer aan het begin van de lijst.

  • Beperkingen. Een lijst met beperkingen voor een typeparameter kan de volgende items in elke combinatie bevatten:

    • Een willekeurig aantal interfaces. Het opgegeven type moet elke interface in deze lijst implementeren.

    • Ten hoogste één klas. Het opgegeven type moet overnemen van die klasse.

    • Het trefwoord New. Het opgegeven type moet een parameterloze constructor beschikbaar maken waartoe uw algemene type toegang heeft. Dit is handig als u een typeparameter beperkt door een of meer interfaces. Een type dat interfaces implementeert, maakt niet noodzakelijkerwijs een constructor beschikbaar. Afhankelijk van het toegangsniveau van een constructor heeft de code binnen het algemene type mogelijk geen toegang.

    • Class Het trefwoord of het Structure trefwoord. Het Class trefwoord beperkt een algemene typeparameter om te vereisen dat elk typeargument dat eraan wordt doorgegeven, een verwijzingstype is, bijvoorbeeld een tekenreeks, matrix of gemachtigde of een object dat is gemaakt op basis van een klasse. Het Structure trefwoord beperkt een algemene typeparameter om te vereisen dat elk typeargument dat eraan wordt doorgegeven, een waardetype is, bijvoorbeeld een structuur, opsomming of elementair gegevenstype. U kunt beide Class en Structure in hetzelfde constraintlistniet opnemen.

    Het opgegeven type moet voldoen aan elke vereiste die u inneemt constraintlist.

    Beperkingen voor elke typeparameter zijn onafhankelijk van beperkingen voor andere typeparameters.

Gedrag

  • Compileertijdvervanging. Wanneer u een samengesteld type maakt op basis van een algemeen programmeerelement, geeft u een gedefinieerd type op voor elke typeparameter. De Visual Basic-compiler vervangt het opgegeven type voor elk exemplaar van typename het algemene element.

  • Afwezigheid van beperkingen. Als u geen beperkingen opgeeft voor een typeparameter, is uw code beperkt tot de bewerkingen en leden die worden ondersteund door het objectgegevenstype voor die typeparameter.

Voorbeeld 1

In het volgende voorbeeld ziet u een basisdefinitie van een algemene woordenlijstklasse, met inbegrip van een skeletfunctie om een nieuw item toe te voegen aan de woordenlijst.

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

Voorbeeld 2

Omdat dictionary dit algemeen is, kan de code die deze gebruikt een verscheidenheid aan objecten maken, elk met dezelfde functionaliteit, maar op een ander gegevenstype reageren. In het volgende voorbeeld ziet u een coderegel waarmee een dictionary object wordt gemaakt met String vermeldingen en Integer sleutels.

Dim dictInt As New dictionary(Of String, Integer)

Voorbeeld 3

In het volgende voorbeeld ziet u de equivalente skeletdefinitie die is gegenereerd door het voorgaande voorbeeld.

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

Zie ook