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 typenameelementu . 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 lub Structure słowo kluczowe. Słowo Class 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łowo Structure 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 tych Class elementów i Structure w tym samym constraintlistobiekcie .

    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

Zobacz też