Zoeken…


Maak een generieke klasse

Er wordt een generiek type gemaakt om aan te passen, zodat dezelfde functionaliteit toegankelijk kan zijn voor verschillende gegevenstypen.

Public Class SomeClass(Of T)
    Public Sub doSomething(newItem As T)
        Dim tempItem As T
        ' Insert code that processes an item of data type t.
    End Sub
End Class

Exemplaar van een generieke klasse

Door een instantie van dezelfde klasse te maken met een ander gegeven type, verandert de interface van de klasse afhankelijk van het gegeven type.

Dim theStringClass As New SomeClass(Of String)
Dim theIntegerClass As New SomeClass(Of Integer)

voer hier de afbeeldingsbeschrijving in

Definieer een 'generieke' klasse

Een generieke klasse is een klasse die zich aanpast aan een later gegeven type, zodat dezelfde functionaliteit aan verschillende typen kan worden aangeboden.

In dit basisvoorbeeld wordt een generieke klasse gemaakt. Het heeft een sub die het generieke type T gebruikt. Bij het programmeren van deze klasse kennen we het type T niet. In dit geval heeft T alle kenmerken van Object.

Public Class SomeClass(Of T)
    Public Sub doSomething(newItem As T)
        Dim tempItem As T
        ' Insert code that processes an item of data type t.
    End Sub
End Class

Gebruik een generieke klasse

In dit voorbeeld zijn er 2 instanties gemaakt van de SomeClass Class. Afhankelijk van het gegeven type hebben de 2 instanties een andere interface:

Dim theStringClass As New SomeClass(Of String)
Dim theIntegerClass As New SomeClass(Of Integer)

voer hier de afbeeldingsbeschrijving in voer hier de afbeeldingsbeschrijving in

De meest bekende generieke klasse is Lijst (van)

Beperk de mogelijke typen gegeven

De mogelijke typen die worden doorgegeven aan een nieuwe instantie van SomeClass moeten SomeBaseClass erven. Dit kan ook een interface zijn. De kenmerken van SomeBaseClass zijn toegankelijk binnen deze klassedefinitie.

Public Class SomeClass(Of T As SomeBaseClass)
    Public Sub DoSomething(newItem As T)
        newItem.DoSomethingElse()
        ' Insert code that processes an item of data type t.
    End Sub
End Class

Public Class SomeBaseClass
    Public Sub DoSomethingElse()
    End Sub
End Class

Maak een nieuwe instantie van het gegeven type

U kunt tijdens het compileren een nieuwe intentie van een generiek type maken.

Public Class SomeClass(Of T As {New})
    Public Function GetInstance() As T
        Return New T
    End Function
End Class

Of met beperkte types:

Public Class SomeClass(Of T As {New, SomeBaseClass})
    Public Function GetInstance() As T
        Return New T
    End Function
End Class

Public Class SomeBaseClass
End Class

De baseClass (als er geen object is gegeven) moet een parameter zonder constructor hebben.

Dit kan ook worden gedaan tijdens runtime door reflectie



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow