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 ]
|
||||||
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
Funkce pro převod typů (Visual Basic)