Visual Basic .NET Language
Дженерики
Поиск…
Создание общего класса
Генерируемый тип создается для адаптации, так что одна и та же функция может быть доступна для разных типов данных.
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
Экземпляр общего класса
Создавая экземпляр того же класса с заданным другим типом, интерфейс класса изменяется в зависимости от заданного типа.
Dim theStringClass As New SomeClass(Of String)
Dim theIntegerClass As New SomeClass(Of Integer)
Определить «общий» класс
Общий класс - это класс, который адаптируется к более позднему заданному типу, так что одна и та же функциональность может быть предложена для разных типов.
В этом базовом примере создается общий класс. У него есть суб, который использует общий тип T. При программировании этого класса мы не знаем тип T. В этом случае T имеет все характеристики 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
Использовать общий класс
В этом примере есть 2 экземпляра класса SomeClass. В зависимости от типа данных два экземпляра имеют другой интерфейс:
Dim theStringClass As New SomeClass(Of String)
Dim theIntegerClass As New SomeClass(Of Integer)
Самый известный общий класс - List (of)
Ограничьте возможные типы
Возможные типы, переданные новому экземпляру SomeClass, должны наследовать SomeBaseClass. Это также может быть интерфейс. Характеристики SomeBaseClass доступны в этом определении класса.
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
Создайте новый экземпляр данного типа
Создание нового типа универсального типа может быть выполнено / записано во время компиляции.
Public Class SomeClass(Of T As {New})
Public Function GetInstance() As T
Return New T
End Function
End Class
Или с ограниченными типами:
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
Базовому классу (если его не задано Object) должен быть меньше конструктор с параметром.
Это также можно сделать во время выполнения через отражение