Sdílet prostřednictvím


Enum – příkaz (Visual Basic)

Deklaruje výčet a definuje hodnoty jejích členů.

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

Části

Část

Description

attributelist

Nepovinné.Seznam atributů, které platí pro tento výčet.Je nutné uzavřít seznam atributů v lomených závorkách ("<"a">").

FlagsAttribute Atributu znamená, že hodnota výčtu instancí můžete zahrnout více výčtu členů a že každý člen představuje bitové pole Hodnota výčtu.

accessmodifier

Nepovinné.Určuje, jaké tento výčet přístup.Může být jeden z následujících:

Můžete určit ProtectedFriend povolit přístup z kódu výčet tříd, odvozené třídy nebo stejné sestavení.

Shadows

Nepovinné.Určuje, že tento výčet redeclares a skryje identicky pojmenované programovací element nebo sada přetížené prvků v základní třídě.Můžete určit stíny pouze na samotný výčtu, na kterýkoli z jejích členů.

enumerationname

Povinné.Název výčtu.Informace o platné názvy, viz Deklarované názvy elementu (Visual Basic).

datatype

Nepovinné.Typ dat výčet a jeho členů.

memberlist

Povinné.Seznam členů konstanty je deklarován v tomto prohlášení.Více členů se na jednotlivé zdrojové řádky kódu.

Každý member má následující syntaxi a částí:[<attribute list>] member name [ = initializer ]

Část

Description

membername

Povinné.Název tohoto člena.

initializer

Nepovinné.Výraz, který je vyhodnocen při kompilaci a přiřazené tomuto členu.

EndEnum

Ukončuje Enum bloku.

Poznámky

Máte-li sadu neměnnost: hodnoty, které jsou logicky vzájemně související, můžete definovat jejich společně ve výčtu.Nabízí smysluplné názvy pro výčet a jeho členy, které jsou snadněji zapamatovatelné než jejich hodnoty.Potom můžete členy vyčíslení na mnoha místech v kódu.

Výhody použití vyčíslení patří:

  • Snižuje chyby způsobené přejímající nebo chybným zadáním čísla.

  • Snadno změnit hodnoty v budoucnosti.

  • Díky kód čitelnější, což znamená, že je méně pravděpodobné, že chyby budou zavedeny.

  • Zajišťuje kompatibilitu.Používáte vyčíslení kódu je méně pravděpodobné, že pokud v budoucnu někdo změní hodnoty odpovídající názvy členů.

Výčet má název základní typ dat a sady členů.Každý člen představuje konstanta.

Výčet deklarovat na třídu, strukturu, modulu nebo úroveň rozhraní mimo jakéhokoli postupu je člena výčtu.Je členem třídy, struktury, modulu nebo prohlašuje, že rozhraní.

Člena vyčíslení můžete přistupovat odkudkoli v rámci třídy, struktury, modulu nebo rozhraní.Kód vně třídy, struktury nebo modul kvalifikovat název vytváření výčtu člen s názvem této třídy, struktury nebo modulu.Nutnost použití úplných názvů přidáním se můžete vyhnout dovozy prohlášení ve zdrojovém souboru.

Výčet deklarovat na úrovni oboru názvů vně třídy, struktury, modulu nebo rozhraní, je členem oboru názvů je zobrazen.

Prohlášení kontextu výčtu musí být zdrojový soubor, obor názvů, třídu, strukturu, modulu nebo rozhraní a nemůže být postup.Další informace naleznete v tématu Kontexty deklarace a výchozí úrovně přístupu (Visual Basic).

Můžete použít atributy výčtu jako celku, ale jeho členům jednotlivě.Atribut přispívá informace metadat sestavení.

Typ dat

Enum Prohlášení deklarovat datový typ výčtu.Každý člen má datový typ výčtu jeho.You can specify Byte, Integer, Long, SByte, Short, UInteger, ULong, or UShort.

Pokud nezadáte datatype pro výčet, každý člen má datový typ jeho initializer.Pokud zadáte i datatype a initializer, typ dat initializer musí být převoditelný na datatype.Pokud ani datatype ani initializer je výchozí typ dat Integer.

Inicializace členů

Enum Prohlášení lze inicializovat obsah vybrané členy v memberlist.Pomocí initializer zadat výraz přiřazen ke členu.

Pokud nezadáte initializer pro člena, Visual Basic inicializuje ji buď na nulu (Pokud je první member v memberlist), nebo na hodnotu větší než bezprostředně předcházejících jedním member.

Výraz v každé initializer může být libovolná kombinace literály, jiné konstanty, které jsou již definovány a výčet členů, které jsou již definovány, včetně předchozí člen tento výčet.Aritmetické a logické operátory můžete použít kombinace těchto prvků.

Nemůžete použít proměnné nebo funkce v initializer.Však můžete použít klíčová slova převodu například CByte a CShort.Můžete také použít AscW při volání s konstantou String nebo Char argument, protože lze vyhodnotit v čase kompilace.

Výčty nemohou mít hodnoty s plovoucí desetinnou čárkou.Pokud člen je přiřazena hodnota s plovoucí desetinnou čárkou a Option Strict je nastavena na zapnuto, dojde k chybě kompilátoru.Pokud Option Strict je vypnuto, hodnota automaticky převedena na Enum typu.

Pokud hodnota člena přesahuje rozsah povolených pro základní typ dat nebo inicializovat žádného člena maximální hodnotu povolenou základní typ dat, kompilátor ohlásí chybu.

Modifikátory

Třída struktury, modul a rozhraní člena vyčíslení výchozí přístup veřejnosti.Můžete upravit jejich úrovně přístupu s modifikátory přístupu.Výchozí obor názvů členské vyčíslení přístup přítele.Můžete upravit jejich úrovně přístupu veřejnosti, ale nikoli soukromé nebo chráněné.Další informace naleznete v tématu Úrovně přístupu v jazyce Visual Basic.

Všechny členy vyčíslení mají přístup veřejnosti a všechny modifikátory přístupu nelze použít na ně.Však sám výčet má omezenější úrovni přístupu, úroveň přístupu zadaný výčet přednost.

Ve výchozím nastavení všechny výčty jsou typy a jejich pole jsou konstanty.Proto Shared, Static, a ReadOnly klíčová slova nelze používat při deklaraci výčtu nebo jeho členů.

Přiřazení více hodnot

Vyčíslení obvykle představují hodnoty vzájemně vylučují.Včetně FlagsAttribute atributu v Enum prohlášení, můžete místo toho přiřadit více hodnot výčtu instancí.FlagsAttribute Atribut určuje výčet považovány bitové pole, sadu příznaků.Nazývají se bitového vyčíslení.

Když deklarujete pomocí výčtu FlagsAttribute atribut, doporučujeme použít pravomoci 2, který je, 1, 2, 4, 8, 16 a podobně pro hodnoty.Také doporučujeme, aby "None" název člena, jehož hodnota je 0.Další pokyny naleznete v FlagsAttribute a Enum.

Příklad

Následující příklad ukazuje použití Enum prohlášení.Všimněte si, že člen je označována jako EggSizeEnum.Mediuma nikoli 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

Metoda v následujícím příkladu je mimo Egg třídy.Proto EggSizeEnum je plně kvalifikovaný 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

V následujícím příkladu Enum příkaz definovat sadu souvisejících s názvem konstanty.V tomto případě jsou hodnoty barev, které je možné navrhnout formuláře pro zadávání dat pro databázi.

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

Následující příklad zobrazuje hodnoty, které zahrnují kladná i záporná čísla.

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

V následujícím příkladu As klauzule lze určit datatype výčtu.

Public Enum MyEnum As Byte
  Zero
  One
  Two
End Enum

Následující příklad ukazuje použití bitové operace výčtu.Více hodnot lze přiřadit k instanci bitového výčtu.Enum Prohlášení zahrnuje FlagsAttribute atribut, který označuje, že výčet lze považovat za sadu příznaků.

' 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

Následující příklad prochází výčtu.Používá GetNames metodu načtení pole názvy členů z výčtu, a GetValues načíst pole hodnot členů.

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

Viz také

Referenční dokumentace

Enum

Const – příkaz (Visual Basic)

Dim – příkaz (Visual Basic)

Funkce pro převod typů (Visual Basic)

AscW

Koncepty

Implicitní a explicitní převody (Visual Basic)

Konstanty a výčty (Visual Basic)