Visual Basic .NET Language
Generics
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)
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)
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