Udostępnij za pośrednictwem


Enum — Instrukcja (Visual Basic)

Deklaruje wyliczenie i definiuje wartości jego członków.

[ <attributelist> ] [ accessmodifier ]  [ Shadows ] 
Enum enumerationname [ As datatype ] 
   memberlist
End Enum

Części

Część

Opis

attributelist

Opcjonalne.Lista atrybutów, które stosuje się do tego wyliczenia.Należy ująć listy atrybutów w nawiasy ostre ("<"i">").

FlagsAttribute Atrybut wskazuje, że wartość wyliczenia instancji może zawierać wiele członkowie wyliczenia i że każdego członka reprezentuje pole bitowe wartości wyliczenia.

accessmodifier

Opcjonalne.Określa, jakiego można uzyskać dostęp do tego wyliczenia.Może być jedną z następujących czynności:

Można określić ProtectedFriend aby umożliwić dostęp z kodu wewnątrz wyliczanie klasy, klasy pochodnej lub tego samego zestawu.

Shadows

Opcjonalne.Określa, że to wyliczenie redeclares i ukrywa element programowania o identycznej nazwie, lub zestaw elementów przeciążony, w klasie podstawowej.Można określić cienie tylko na wyliczenie, sama, a nie na któregokolwiek z członków.

enumerationname

Wymagane.Nazwa wyliczenia.Informacje o prawidłowych nazw, zobacz Zadeklarowane nazwy elementów (Visual Basic).

datatype

Opcjonalne.Typ danych wyliczanie i wszystkich jej członków.

memberlist

Wymagane.Lista stałych Członkowskich zostały zgłoszone w tej instrukcji.Wielu członków pojawiają się na poszczególne źródła wierszy kodu.

Każdy member ma następującą składnię i części:[<attribute list>] member name [ = initializer ]

Część

Opis

membername

Wymagane.Nazwa tego członka.

initializer

Opcjonalne.Wyrażenie jest oceniane w czasie kompilacji i przypisany do tego członka.

EndEnum

Kończy Enum bloku.

Uwagi

Jeśli zbiór wartości niezmiennymi okresami, logicznie powiązanych ze sobą, można zdefiniować je razem w wyliczenia.Zapewnia to znaczące nazwy do wyliczenia i jego członków, które są łatwiejsze do zapamiętania niż ich wartości.Członkowie wyliczenia można następnie używać w wielu miejscach, w kodzie.

Korzyści ze stosowania wyliczeń, obejmują:

  • Zmniejsza błędów spowodowanych transponujących lub błędne liczb.

  • Ułatwia zmienianie wartości w przyszłości.

  • Powoduje, że kod łatwiejsze do czytania, co oznacza, że istnieje mniejsze prawdopodobieństwo, że zostaną wprowadzone błędy.

  • Zapewnia zgodnooć.Jeśli używasz wyliczeń, kod jest mniej prawdopodobne, jeśli w przyszłości zmiany wprowadzane wartości odpowiadające nazwy składników.

Wyliczenie ma nazwę, typ danych oraz zestaw elementów członkowskich.Każdy składnik oznacza stałą.

Wyliczenie zadeklarowane na poziomie klasy, struktury, moduł lub interfejsu, poza jakąkolwiek procedurą jest Członkowskich wyliczania.Jest członkiem klasy, struktury, moduł lub interfejsu, który deklaruje go.

Wyliczenia Członkowskich jest możliwy z gdziekolwiek w obrębie klasy, struktury, moduł lub interfejsu.Kod poza klasą, strukturą lub moduł musi kwalifikować się nazwę wyliczenia Członkowskie nazwą tej klasy, struktury lub moduł.Można uniknąć potrzeby używania w pełni kwalifikowane nazwy przez dodanie przywóz instrukcji w pliku źródłowym.

Wyliczenie zadeklarowane na poziomie obszaru nazw, poza klasy, struktury, moduł lub interfejsu, jest członkiem obszaru nazw, w którym się pojawia.

Kontekście deklaracji dla wyliczenia musi być plik źródłowy, obszar nazw, klasy, struktury, moduł lub interfejsu i nie może być procedurę.Aby uzyskać więcej informacji, zobacz Kontekst deklaracji i domyślne poziomy dostępu (Visual Basic).

Można zastosować atrybutów do wyliczenia jako całości, ale nie do jej członków indywidualnie.Atrybut przyczynia się informacje z zestawu metadanych.

Typ danych

Enum Instrukcji można zadeklarować typu danych wyliczenia.Każdy członek ma typ danych wyliczenia.You can specify Byte, Integer, Long, SByte, Short, UInteger, ULong, or UShort.

Jeśli nie zostanie datatype wyliczania, każdy członek ma typ danych jej initializer.Jeśli określisz zarówno datatype i initializer, typ danych initializer musi być typu datatype.Jeśli ani datatype ani initializer jest obecny, typ danych wartości domyślne do Integer.

Inicjowanie członków

Enum Instrukcji może zainicjować zawartość wybranych członków w memberlist.Za pomocą initializer do dostarczania wyrażenie ma być przypisany do członka.

Jeśli nie zostanie initializer dla elementu członkowskiego języka Visual Basic inicjuje ją do zera (jeśli jest pierwszym member w memberlist), lub wartość większą o jeden niż bezpośrednio poprzedzających member.

Wyrażenie dostarczone w każdym initializer może być dowolną kombinacją literały, inne stałe, które są już zdefiniowane i członkowie wyliczenia, które są już zdefiniowane, łącznie z poprzednich członek tego wyliczenia.Za pomocą operatorów arytmetycznych i logiczne połączenie tych elementów.

Nie można używać zmiennych lub funkcji w initializer.Jednakże, takie jak można konwersji słowa kluczowe CByte i CShort.Można również użyć AscW rozmowy ze stałą String lub Char argument, ponieważ, który może zostać oceniony w czasie kompilacji.

Wyliczenia nie może mieć wartości zmiennoprzecinkowych.Jeśli członek jest przypisana wartość zmiennoprzecinkowa i Option Strict ustawiono na, wystąpi błąd kompilatora.Jeśli Option Strict jest wyłączony, wartość jest automatycznie konwertowany na Enum typu.

Jeśli wartość elementu członkowskiego przekracza dopuszczalny zakres podstawowy typ danych lub zainicjować jakiegokolwiek członka do maksymalnej wartości dopuszczalnej przez podstawowy typ danych, kompilator zgłosi błąd.

Modyfikatory

Klasy, struktury, moduł i domyślne wyliczenia Członkowskie interfejsu publicznego dostępu.Można dostosować ich poziomy dostępu z modyfikatorów dostępu.Obszar nazw Członkowskie wyliczenia domyślnie przyjaciel dostępu.Można dostosować ich poziomy dostępu do publicznych, ale nie do prywatnym ani chronionym.Aby uzyskać więcej informacji, zobacz Poziomy dostępu w Visual Basic.

Wszyscy członkowie wyliczenia mają dostęp publiczny i nie można używać dowolnego modyfikatorów dostępu na nich.Jeśli wyliczenie, sam ma bardziej ograniczony poziom dostępu, wyliczenia określony poziom dostępu ma pierwszeństwo.

Domyślnie wszystkie wyliczenia to typów i ich pól są stałymi.Dlatego Shared, Static, i ReadOnly nie można użyć słowa kluczowe, odmawiając wyliczenia lub jej członków.

Przypisywanie wielu wartości

Wyliczenia zazwyczaj reprezentują wartości wzajemnie się wykluczają.W tym FlagsAttribute atrybutu w Enum deklaracji, można zamiast tego przypisać wiele wartości do instancji wyliczenia.FlagsAttribute Atrybut określa, że wyliczenie traktowane jako pole bitowe, czyli zestaw flag.Nazywa się bitowe wyliczenia.

Jeżeli wyliczenie oświadczyć za pomocą FlagsAttribute atrybut, zalecane korzystanie z uprawnień 2, który jest, 1, 2, 4, 8, 16 i tak dalej, dla wartości.Zalecane jest również, że należy "None" nazwa członka, którego wartością jest 0.Dodatkowe wskazówki, zobacz FlagsAttribute i Enum.

Przykład

Poniższy przykład pokazuje, jak używać Enum instrukcji.Należy zauważyć, że członek jest określone jako EggSizeEnum.Medium, a nie jako Medium.

Public Class Egg
    Enum EggSizeEnum
        Jumbo
        ExtraLarge
        Large
        Medium
        Small
    End Enum 

    Public Sub Poach()
        Dim size As EggSizeEnum

        size = EggSizeEnum.Medium
        ' Continue processing... 
    End Sub 
End Class

W poniższym przykładzie metoda jest poza Egg klasy.W związku z tym EggSizeEnum jest w pełni kwalifikowana jako Egg.EggSizeEnum.

Public Sub Scramble(ByVal size As Egg.EggSizeEnum)
    ' Process for the three largest sizes. 
    ' Throw an exception for any other size. 
    Select Case size
        Case Egg.EggSizeEnum.Jumbo
            ' Process. 
        Case Egg.EggSizeEnum.ExtraLarge
            ' Process. 
        Case Egg.EggSizeEnum.Large
            ' Process. 
        Case Else 
            Throw New ApplicationException("size is invalid: " & size.ToString)
    End Select 
End Sub

W poniższym przykładzie użyto Enum instrukcję, aby zdefiniować zestaw powiązanych nazwane wartości stałe.W tym wypadku wartości są kolory, można projektować formularze wprowadzania danych dla bazy danych.

Public Enum InterfaceColors
    MistyRose = &HE1E4FF&
    SlateGray = &H908070&
    DodgerBlue = &HFF901E&
    DeepSkyBlue = &HFFBF00&
    SpringGreen = &H7FFF00&
    ForestGreen = &H228B22&
    Goldenrod = &H20A5DA&
    Firebrick = &H2222B2&
End Enum

W poniższym przykładzie przedstawiono wartości, które zawierają liczby dodatnie i ujemne.

Enum SecurityLevel
    IllegalEntry = -1
    MinimumSecurity = 0
    MaximumSecurity = 1
End Enum

W poniższym przykładzie As klauzuli jest używana do określenia datatype wyliczenia.

Public Enum MyEnum As Byte
  Zero
  One
  Two
End Enum

Poniższy przykład pokazuje, jak używać wyliczania logiczną.Wiele wartości, można przypisać do wystąpienia wyliczania logiczną.Enum Zgłoszenie obejmuje FlagsAttribute atrybut, który wskazuje, że wyliczenia mogą być traktowane jako zestaw flag.

' Apply the Flags attribute, which allows an instance 
' of the enumeration to have multiple values.
<Flags()> Public Enum FilePermissions As Integer
    None = 0
    Create = 1
    Read = 2
    Update = 4
    Delete = 8
End Enum 

Public Sub ShowBitwiseEnum()

    ' Declare the non-exclusive enumeration object and 
    ' set it to multiple values. 
    Dim perm As FilePermissions
    perm = FilePermissions.Read Or FilePermissions.Update

    ' Show the values in the enumeration object.
    Console.WriteLine(perm.ToString)
    ' Output: Read, Update 

    ' Show the total integer value of all values 
    ' in the enumeration object.
    Console.WriteLine(CInt(perm))
    ' Output: 6 

    ' Show whether the enumeration object contains 
    ' the specified flag.
    Console.WriteLine(perm.HasFlag(FilePermissions.Update))
    ' Output: True 
End Sub

Poniższy przykład iterację wyliczenia.Używa GetNames metoda pobierania tablicę nazw składników z wyliczenia, i GetValues do pobrania tablicy wartości elementów członkowskich.

Enum EggSizeEnum
    Jumbo
    ExtraLarge
    Large
    Medium
    Small
End Enum 

Public Sub Iterate()
    Dim names = [Enum].GetNames(GetType(EggSizeEnum))
    For Each name In names
        Console.Write(name & " ")
    Next
    Console.WriteLine()
    ' Output: Jumbo ExtraLarge Large Medium Small  

    Dim values = [Enum].GetValues(GetType(EggSizeEnum))
    For Each value In values
        Console.Write(value & " ")
    Next
    Console.WriteLine()
    ' Output: 0 1 2 3 4  
End Sub

Zobacz też

Informacje

Enum

Const — Instrukcja (Visual Basic)

Dim — Instrukcja (Visual Basic)

Funkcje konwersji typu (Visual Basic)

AscW

Koncepcje

Konwersje jawne i niejawne (Visual Basic)

Stałe i wyliczenia (Visual Basic)