Atrybut FlagsAttribute wskazuje, że wartość wystąpienia wyliczenia może zawierać wiele elementów członkowskich wyliczenia, a każdy element członkowski reprezentuje pole bitowe w wartości wyliczenia.
accessmodifier
Opcjonalny. Określa, jaki kod może uzyskać dostęp do tego wyliczenia. Może być jednym z następujących elementów:
Opcjonalny. Określa, że ta wyliczenie redecyduje i ukrywa identycznie nazwany element programowania lub zestaw przeciążonych elementów w klasie bazowej. Można określić tylko cienie w samym wyliczeniu, a nie na żadnym z jego elementów członkowskich.
enumerationname
Wymagany. Nazwa wyliczenia. Aby uzyskać informacje na temat prawidłowych nazw, zobacz Deklarowane nazwy elementów.
datatype
Opcjonalny. Typ danych wyliczenia i wszystkich jego elementów członkowskich.
memberlist
Wymagany. Lista stałych składowych zadeklarowanych w tej instrukcji. Wiele elementów członkowskich jest wyświetlanych w poszczególnych wierszach kodu źródłowego.
Każda z nich member ma następującą składnię i części: [<attribute list>] member name [ = initializer ]
Element
opis
membername
Wymagane. Nazwa tego elementu członkowskiego.
initializer
Opcjonalny. Wyrażenie obliczane w czasie kompilacji i przypisane do tego elementu członkowskiego.
EndEnum
Enum Przerywa blok.
Uwagi
Jeśli masz zestaw niezmiennych wartości, które są logicznie powiązane ze sobą, możesz je zdefiniować razem w wyliczenie. Zapewnia to znaczące nazwy wyliczenia i jego składowych, które są łatwiejsze do zapamiętania niż ich wartości. Następnie możesz użyć elementów członkowskich wyliczenia w wielu miejscach w kodzie.
Korzyści wynikające z używania wyliczenia obejmują następujące elementy:
Zmniejsza błędy spowodowane transponowaniem lub mistypingiem liczb.
Ułatwia zmianę wartości w przyszłości.
Ułatwia odczytywanie kodu, co oznacza, że jest mniej prawdopodobne, że zostaną wprowadzone błędy.
Zapewnia zgodność z przyszłością. Jeśli używasz wyliczenia, kod jest mniej prawdopodobny, jeśli w przyszłości ktoś zmieni wartości odpowiadające nazwom elementów członkowskich.
Wyliczenie ma nazwę, podstawowy typ danych i zestaw elementów członkowskich. Każdy element członkowski reprezentuje stałą.
Wyliczenie zadeklarowane na poziomie klasy, struktury, modułu lub interfejsu poza dowolną procedurą jest wyliczeniem składowym. Jest to element członkowski klasy, struktury, modułu lub interfejsu, który go deklaruje.
Dostęp do wyliczenia składowych można uzyskać z dowolnego miejsca w swojej klasie, strukturze, module lub interfejsie. Kod poza klasą, strukturą lub modułem musi kwalifikować nazwę wyliczenia składowego z nazwą tej klasy, struktury lub modułu. Można uniknąć konieczności używania w pełni kwalifikowanych nazw, dodając instrukcję Import do pliku źródłowego.
Wyliczenie zadeklarowane na poziomie przestrzeni nazw poza dowolną klasą, strukturą, modułem lub interfejsem jest elementem członkowskim przestrzeni nazw, w której się pojawia.
Kontekst deklaracji dla wyliczenia musi być plikiem źródłowym, przestrzenią nazw, klasą, strukturą, modułem lub interfejsem i nie może być procedurą. Aby uzyskać więcej informacji, zobacz Konteksty deklaracji i Domyślne poziomy dostępu.
Atrybuty można zastosować do wyliczenia jako całości, ale nie do jego składowych indywidualnie. Atrybut współtworzy informacje o metadanych zestawu.
Typ danych
Instrukcja Enum może zadeklarować typ danych wyliczenia. Każdy element członkowski przyjmuje typ danych wyliczenia. Można określić Byte, , Integer, LongUIntegerULongSByteShortlub .UShort
Jeśli nie określisz datatype wyliczenia, każdy element członkowski przyjmuje typ danych .initializer Jeśli określisz wartości i datatypeinitializer, typ initializer danych musi być konwertowany na datatypewartość . Jeśli ani datatypeinitializer nie istnieje, typ danych jest domyślnie ustawiona na Integer.
Inicjowanie elementów członkowskich
Instrukcja Enum może zainicjować zawartość wybranych elementów członkowskich w pliku memberlist. initializer Służy do podawania wyrażenia, które ma zostać przypisane do elementu członkowskiego.
Jeśli nie określisz initializer elementu członkowskiego, program Visual Basic inicjuje go do zera (jeśli jest to pierwszy member w memberlistelemencie ) lub do wartości większej o jedną niż bezpośrednio poprzednia member.
Wyrażenie podane w każdym initializer z nich może być dowolną kombinacją literałów, innych stałych, które są już zdefiniowane, oraz składowych wyliczania, w tym poprzedniego elementu członkowskiego tego wyliczenia. Aby połączyć takie elementy, można użyć operatorów arytmetycznych i logicznych.
Nie można używać zmiennych ani funkcji w programie initializer. Można jednak użyć słów kluczowych konwersji, takich jak CByte i CShort. Można również użyć AscW metody w przypadku wywołania jej ze stałą String lub Char argumentem, ponieważ można ją ocenić w czasie kompilacji.
Wyliczenia nie mogą mieć wartości zmiennoprzecinkowych. Jeśli element członkowski ma przypisaną wartość zmiennoprzecinkową i Option Strict jest ustawiony na wartość on, wystąpi błąd kompilatora. Jeśli Option Strict wartość jest wyłączona, wartość jest automatycznie konwertowana na Enum typ.
Jeśli wartość elementu członkowskiego przekracza dozwolony zakres dla bazowego typu danych lub jeśli zainicjujesz dowolny element członkowski do maksymalnej wartości dozwolonej przez bazowy typ danych, kompilator zgłasza błąd.
Modyfikatory
Wyliczenia składowe klasy, struktury, modułu i interfejsu są domyślnie dostępne publicznie. Możesz dostosować ich poziomy dostępu za pomocą modyfikatorów dostępu. Wyliczenia elementów członkowskich przestrzeni nazw są domyślnie dostępne dla znajomych. Możesz dostosować ich poziomy dostępu do publicznej wiadomości, ale nie do prywatnych lub chronionych. Aby uzyskać więcej informacji, zobacz Poziomy dostępu w Visual Basic.
Wszyscy członkowie wyliczania mają dostęp publiczny i nie można na nich używać żadnych modyfikatorów dostępu. Jeśli jednak sam wyliczenie ma bardziej ograniczony poziom dostępu, określony poziom dostępu wyliczania ma pierwszeństwo.
Domyślnie wszystkie wyliczenia są typami, a ich pola są stałymi. W związku z Sharedtym słowa kluczowe , Statici ReadOnly nie mogą być używane podczas deklarowania wyliczenia lub jego elementów członkowskich.
Przypisywanie wielu wartości
Wyliczenia zwykle reprezentują wzajemnie wykluczające się wartości. Po uwzględnieniu atrybutu FlagsAttributeEnum w deklaracji można zamiast tego przypisać wiele wartości do wystąpienia wyliczenia. Atrybut FlagsAttribute określa, że wyliczenie ma być traktowane jako pole bitowe, czyli zestaw flag. Są to nazywane wyliczeniami bitowymi .
W przypadku deklarowania wyliczenia przy użyciu atrybutu FlagsAttribute zalecamy użycie uprawnień 2, czyli 1, 2, 4, 8, 16 itd. dla wartości. Zalecamy również, aby parametr "None" był nazwą elementu członkowskiego, którego wartość to 0. Aby uzyskać dodatkowe wytyczne, zobacz FlagsAttribute i Enum.
Przykład 1
W poniższym przykładzie pokazano, jak używać instrukcji Enum . Należy pamiętać, że element członkowski jest określany jako EggSizeEnum.Medium, a nie jako Medium.
VB
PublicClass Egg
Enum EggSizeEnum
Jumbo
ExtraLarge
Large
Medium
Small
EndEnumPublicSub Poach()
Dim size As EggSizeEnum
size = EggSizeEnum.Medium
' Continue processing...EndSubEndClass
Przykład 2
Metoda w poniższym przykładzie znajduje się poza klasą Egg . W związku z EggSizeEnum tym jest w pełni kwalifikowany jako Egg.EggSizeEnum.
VB
PublicSub Scramble(ByVal size As Egg.EggSizeEnum)
' Process for the three largest sizes.' Throw an exception for any other size.SelectCase size
Case Egg.EggSizeEnum.Jumbo
' Process.Case Egg.EggSizeEnum.ExtraLarge
' Process.Case Egg.EggSizeEnum.Large
' Process.CaseElseThrowNew ApplicationException("size is invalid: " & size.ToString)
EndSelectEndSub
Przykład 3
W poniższym przykładzie użyto instrukcji Enum , aby zdefiniować powiązany zestaw nazwanych wartości stałych. W takim przypadku wartości to kolory, które można wybrać do projektowania formularzy wprowadzania danych dla bazy danych.
W poniższym przykładzie klauzula As służy do określania datatype wyliczenia.
VB
PublicEnum MyEnum AsByte
Zero
One
Two
EndEnum
Przykład 6
W poniższym przykładzie pokazano, jak używać wyliczenia bitowego. Do wystąpienia wyliczenia bitowego można przypisać wiele wartości. Deklaracja Enum zawiera FlagsAttribute atrybut, który wskazuje, że wyliczenie może być traktowane jako zestaw flag.
VB
' Apply the Flags attribute, which allows an instance' of the enumeration to have multiple values.
<Flags()> PublicEnum FilePermissions AsInteger
None = 0
Create = 1
Read = 2
Update = 4
Delete = 8EndEnumPublicSub 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: TrueEndSub
Przykład 7
Poniższy przykład iteruje wyliczenie. Używa GetNames metody , aby pobrać tablicę nazw elementów członkowskich z wyliczenia i GetValues pobrać tablicę wartości składowych.
VB
Enum EggSizeEnum
Jumbo
ExtraLarge
Large
Medium
Small
EndEnumPublicSub Iterate()
Dim names = [Enum].GetNames(GetType(EggSizeEnum))
ForEach name In names
Console.Write(name & " ")
Next
Console.WriteLine()
' Output: Jumbo ExtraLarge Large Medium Small Dim values = [Enum].GetValues(GetType(EggSizeEnum))
ForEach value In values
Console.Write(value & " ")
Next
Console.WriteLine()
' Output: 0 1 2 3 4 EndSub
Źródło tej zawartości można znaleźć w witrynie GitHub, gdzie można również tworzyć i przeglądać problemy i żądania ściągnięcia. Więcej informacji znajdziesz w naszym przewodniku dla współtwórców.
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię:
Dołącz do serii meetup, aby tworzyć skalowalne rozwiązania sztucznej inteligencji oparte na rzeczywistych przypadkach użycia z innymi deweloperami i ekspertami.