Lista typów (Visual Basic)
Określa parametry typu dla ogólnego elementu programowania. Wiele parametrów jest rozdzielonych przecinkami. Poniżej znajduje się składnia dla jednego parametru typu.
Składnia
[genericmodifier] typename [ As constraintlist ]
generatora
Termin | Definicja |
---|---|
genericmodifier |
Opcjonalny. Może być używany tylko w interfejsach ogólnych i delegatach. Typ kowariantny można zadeklarować za pomocą słowa kluczowego Out lub kontrawariantu, używając słowa kluczowego In . Zobacz Kowariancja i Kontrawariancja. |
typename |
Wymagany. Nazwa parametru typu. Jest to symbol zastępczy, który ma zostać zastąpiony przez zdefiniowany typ dostarczony przez odpowiedni argument typu. |
constraintlist |
Opcjonalny. Lista wymagań, które ograniczają typ danych, który można dostarczyć dla typename elementu . Jeśli masz wiele ograniczeń, należy je ująć w nawiasy klamrowe ({ } ) i oddzielić je przecinkami. Musisz wprowadzić listę ograniczeń za pomocą słowa kluczowego As . Używasz As tylko raz na początku listy. |
Uwagi
Każdy ogólny element programowania musi mieć co najmniej jeden parametr typu. Parametr typu jest symbolem zastępczym określonego typu ( skonstruowanego elementu), który kod klienta określa podczas tworzenia wystąpienia typu ogólnego. Można zdefiniować ogólną klasę, strukturę, interfejs, procedurę lub delegata.
Aby uzyskać więcej informacji na temat definiowania typu ogólnego, zobacz Typy ogólne w Visual Basic. Aby uzyskać więcej informacji na temat nazw parametrów typów, zobacz Deklarowane nazwy elementów.
Reguły
Nawiasy. Jeśli podasz listę parametrów typu, musisz ująć ją w nawiasy i musisz wprowadzić listę ze słowem kluczowym Of . Używasz
Of
tylko raz na początku listy.Ograniczenia. Lista ograniczeń parametru typu może zawierać następujące elementy w dowolnej kombinacji:
Dowolna liczba interfejsów. Podany typ musi implementować każdy interfejs na tej liście.
Co najwyżej jedna klasa. Podany typ musi dziedziczyć z tej klasy.
Słowo kluczowe
New
. Podany typ musi uwidocznić konstruktor bez parametrów, do którego może uzyskać dostęp typ ogólny. Jest to przydatne, jeśli ograniczasz parametr typu przez co najmniej jeden interfejs. Typ implementujący interfejsy nie musi uwidaczniać konstruktora i w zależności od poziomu dostępu konstruktora kod w typie ogólnym może nie być w stanie uzyskać do niego dostępu.Class
Słowo kluczowe lubStructure
słowo kluczowe. SłowoClass
kluczowe ogranicza ogólny parametr typu, aby wymagać, aby dowolny argument typu przekazany do niego był typem odwołania, na przykład ciągiem, tablicą lub delegatem albo obiektem utworzonym na podstawie klasy. SłowoStructure
kluczowe ogranicza ogólny parametr typu, aby wymagać, aby dowolny argument typu przekazany do niego był typem wartości, na przykład struktura, wyliczenie lub typ danych podstawowych. Nie można uwzględnić obu tychClass
elementów iStructure
w tym samymconstraintlist
obiekcie .
Podany typ musi spełniać wszystkie wymagania, które należy uwzględnić w pliku
constraintlist
.Ograniczenia dla każdego parametru typu są niezależne od ograniczeń dla innych parametrów typu.
Zachowanie
Podstawianie w czasie kompilacji. Podczas tworzenia typu skonstruowanego na podstawie ogólnego elementu programowania należy podać zdefiniowany typ dla każdego parametru typu. Kompilator języka Visual Basic zastępuje typ podany dla każdego wystąpienia
typename
elementu ogólnego.Brak ograniczeń. Jeśli nie określisz żadnych ograniczeń dla parametru typu, kod jest ograniczony do operacji i elementów członkowskich obsługiwanych przez typ danych obiektu dla tego typu parametru.
Przykład 1
W poniższym przykładzie przedstawiono szkieletową definicję klasy słownika ogólnego, w tym funkcję szkieletu, aby dodać nowy wpis do słownika.
Public Class dictionary(Of entryType, keyType As {IComparable, IFormattable, New})
Public Sub add(ByVal et As entryType, ByVal kt As keyType)
Dim dk As keyType
If kt.CompareTo(dk) = 0 Then
End If
End Sub
End Class
Przykład 2
Ponieważ dictionary
jest ogólny, kod, który go używa, może utworzyć różne obiekty na jego podstawie, z których każdy ma tę samą funkcjonalność, ale działa na innym typie danych. W poniższym przykładzie pokazano wiersz kodu, który tworzy dictionary
obiekt z wpisami i Integer
kluczamiString
.
Dim dictInt As New dictionary(Of String, Integer)
Przykład 3
W poniższym przykładzie pokazano równoważną definicję szkieletu wygenerowaną w poprzednim przykładzie.
Public Class dictionary
Public Sub Add(ByVal et As String, ByVal kt As Integer)
Dim dk As Integer
If kt.CompareTo(dk) = 0 Then
End If
End Sub
End Class