Szukaj…


Utwórz klasę ogólną

Typ ogólny jest tworzony w celu dostosowania, aby ta sama funkcjonalność była dostępna dla różnych typów danych.

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

Wystąpienie klasy ogólnej

Po utworzeniu instancji tej samej klasy z podanym innym typem interfejs klasy zmienia się w zależności od danego typu.

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

wprowadź opis zdjęcia tutaj

Zdefiniuj klasę „ogólną”

Klasa ogólna to klasa, która dostosowuje się do późniejszego typu, aby ta sama funkcjonalność mogła być oferowana różnym typom.

W tym podstawowym przykładzie tworzona jest klasa ogólna. Ma okręt podwodny, który używa ogólnego typu T. Podczas programowania tej klasy nie znamy typu T. W tym przypadku T ma wszystkie cechy 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

Użyj klasy ogólnej

W tym przykładzie utworzono 2 instancje klasy SomeClass. W zależności od typu 2 instancje mają inny interfejs:

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

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Najbardziej znaną klasą ogólną jest List (of)

Ogranicz podane możliwe typy

Możliwe typy przekazane do nowej instancji SomeClass muszą dziedziczyć SomeBaseClass. Może to być również interfejs. Charakterystyka SomeBaseClass jest dostępna w ramach tej definicji klasy.

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

Utwórz nową instancję danego typu

Tworzenie nowej intencji typu ogólnego można wykonać / sprawdzić w czasie kompilacji.

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

Lub z ograniczonymi typami:

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

Klasa baseClass (jeśli nie jest podana jako Object) musi mieć konstruktor bez parametrów.

Można to również zrobić w środowisku wykonawczym poprzez odbicie



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow