Sök…


Skapa en generisk klass

En generisk typ skapas för att anpassa sig så att samma funktionalitet kan vara tillgänglig för olika datatyper.

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

Instansen av en generisk klass

Genom att skapa en instans av samma klass med en annan typ givet ändras klassens gränssnitt beroende på den angivna typen.

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

ange bildbeskrivning här

Definiera en "generisk" klass

En generisk klass är en klass som anpassar sig till en senare given typ så att samma funktionalitet kan erbjudas olika typer.

I detta grundläggande exempel skapas en generisk klass. Den har en sub som använder den generiska typen T. När vi programmerar denna klass vet vi inte typen av T. I det här fallet har T alla egenskaper hos 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

Använd en generisk klass

I det här exemplet finns det två instanser som skapats av SomeClass Class. Beroende på vilken typ som anges har de två instanserna ett annat gränssnitt:

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

ange bildbeskrivning här ange bildbeskrivning här

Den mest kända generiska klassen är Lista (av)

Begränsa de angivna möjliga typerna

De möjliga typerna som skickas till en ny instans av SomeClass måste ärva SomeBaseClass. Detta kan också vara ett gränssnitt. Egenskaperna hos SomeBaseClass är tillgängliga inom denna klassdefinition.

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

Skapa en ny instans av den angivna typen

Skapa en ny intans av en generisk typ kan göras / kontrolleras vid sammanställningstiden.

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

Eller med begränsade typer:

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

BasClass (om ingen har gett det är Object) måste ha en parameter mindre konstruktör.

Detta kan också göras vid körning genom reflektion



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow