Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Deklariert eine Aufzählung und definiert die Werte seiner Member.
Syntax
[ <attributelist> ] [ accessmodifier ] [ Shadows ]
Enum enumerationname [ As datatype ]
memberlist
End Enum
Bestandteile
attributelistWahlfrei. Liste der Attribute, die für diese Enumeration gelten. Sie müssen die Attributliste in eckige Klammern ("
<" und ">") einschließen.Das FlagsAttribute Attribut gibt an, dass der Wert einer Instanz der Enumeration mehrere Enumerationsmember enthalten kann und dass jedes Element ein Bitfeld im Enumerationswert darstellt.
accessmodifierWahlfrei. Gibt an, welcher Code auf diese Enumeration zugreifen kann. Dabei kann es sich um eine der folgenden Methoden handeln:
ShadowsWahlfrei. Gibt an, dass diese Aufzählung ein identisch benanntes Programmierelement oder einen Satz überladener Elemente in einer Basisklasse neu deklariert und ausgeblendet. Sie können Schatten nur für die Aufzählung selbst und nicht für eines ihrer Member angeben.
enumerationnameErforderlich. Name der Aufzählung. Informationen zu gültigen Namen finden Sie unter "Deklarierte Elementnamen".
datatypeWahlfrei. Datentyp der Aufzählung und aller zugehörigen Member.
memberlistErforderlich. Liste der Memberkonstanten, die in dieser Anweisung deklariert werden. Mehrere Member werden in einzelnen Quellcodezeilen angezeigt.
Jede
memberweist die folgende Syntax und Teile auf:[<attribute list>] membername [ = initializer ]Teil BESCHREIBUNG membernameErforderlich. Name dieses Mitglieds. initializerWahlfrei. Ausdruck, der zur Kompilierungszeit ausgewertet und diesem Element zugewiesen ist. EndEnumBeendet den
EnumBlock.
Bemerkungen
Wenn Sie über einen Satz von unveränderbaren Werten verfügen, die logisch miteinander verknüpft sind, können Sie sie in einer Enumeration definieren. Dies stellt aussagekräftige Namen für die Aufzählung und ihre Member bereit, die einfacher zu merken sind als ihre Werte. Anschließend können Sie die Enumerationsmber an vielen Stellen im Code verwenden.
Die Vorteile der Verwendung von Enumerationen umfassen Folgendes:
Reduziert Fehler, die durch Transponieren oder Falschtypieren von Zahlen verursacht werden.
Erleichtert das Ändern von Werten in Zukunft.
Erleichtert das Lesen von Code, d. h. es ist weniger wahrscheinlich, dass Fehler eingeführt werden.
Stellt die Vorwärtskompatibilität sicher. Wenn Sie Enumerationen verwenden, schlägt ihr Code weniger wahrscheinlich fehl, wenn in Zukunft jemand die Werte ändert, die den Elementnamen entsprechen.
Eine Aufzählung weist einen Namen, einen zugrunde liegenden Datentyp und eine Gruppe von Elementen auf. Jedes Element stellt eine Konstante dar.
Eine Aufzählung, die auf Klassen-, Struktur-, Modul- oder Schnittstellenebene außerhalb einer Prozedur deklariert ist, ist eine Memberenumeration. Es ist ein Element der Klasse, Struktur, Modul oder Schnittstelle, die sie deklariert.
Auf Memberaufzählungen kann von überall innerhalb ihrer Klasse, Struktur, Modul oder Schnittstelle zugegriffen werden. Code außerhalb einer Klasse, Struktur oder eines Moduls muss den Namen einer Memberaufzählung mit dem Namen dieser Klasse, Struktur oder dieses Moduls qualifizieren. Sie können vermeiden, dass vollqualifizierte Namen verwendet werden müssen, indem Sie der Quelldatei eine Imports-Anweisung hinzufügen.
Eine auf Namespaceebene deklarierte Aufzählung außerhalb einer Klasse, Struktur, Eines Moduls oder einer Schnittstelle ist ein Element des Namespaces, in dem er angezeigt wird.
Der Deklarationskontext für eine Enumeration muss eine Quelldatei, ein Namespace, eine Klasse, eine Struktur, ein Modul oder eine Schnittstelle sein und kann keine Prozedur sein. Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen.
Sie können Attribute auf eine Enumeration als Ganzes anwenden, aber nicht einzeln auf die Member. Ein Attribut trägt Informationen zu den Metadaten der Assembly bei.
Datentyp
Die Enum Anweisung kann den Datentyp einer Enumeration deklarieren. Jedes Element verwendet den Datentyp der Aufzählung. Sie können angebenByte, , Integer, Long, , SByte, Short, UIntegeroder ULongUShort.
Wenn Sie für die Aufzählung nicht angeben datatype , übernimmt jedes Element den Datentyp seiner initializerEnumeration. Wenn Sie sowohl angeben als datatypeauchinitializer, muss der Datentyp initializer in datatype. Wenn weder datatype vorhanden noch initializer vorhanden ist, wird der Datentyp standardmäßig auf Integer.
Initialisieren von Elementen
Die Enum Anweisung kann den Inhalt ausgewählter Member in memberlistinitialisieren. Sie verwenden die Angabe initializer eines Ausdrucks, der dem Element zugewiesen werden soll.
Wenn Sie für ein Element nicht angeben initializer , initialisiert Visual Basic es entweder auf Null (wenn es sich um den ersten member Wert memberlisthandelt), oder auf einen Wert, der um einen Wert größer als die des unmittelbar vorangehenden memberWerts ist.
Der jeweils angegebene initializer Ausdruck kann eine beliebige Kombination aus Literalen, anderen bereits definierten Konstanten und Bereits definierten Enumerationsmembern sein, einschließlich eines vorherigen Elements dieser Enumeration. Sie können arithmetische und logische Operatoren verwenden, um solche Elemente zu kombinieren.
Variablen oder Funktionen können nicht in initializer. Sie können jedoch Konvertierungsstichwörter wie CByte und CShort. Sie können sie auch verwenden AscW , wenn Sie sie mit einer Konstante String oder Char einem Argument aufrufen, da dies zur Kompilierungszeit ausgewertet werden kann.
Enumerationen können keine Gleitkommawerte aufweisen. Wenn einem Mitglied ein Gleitkommawert zugewiesen ist und Option Strict aktiviert ist, tritt ein Compilerfehler auf. Wenn Option Strict der Wert deaktiviert ist, wird der Wert automatisch in den Enum Typ konvertiert.
Wenn der Wert eines Elements den zulässigen Bereich für den zugrunde liegenden Datentyp überschreitet, oder wenn Sie ein Element auf den maximal zulässigen Wert initialisieren, der vom zugrunde liegenden Datentyp zulässig ist, meldet der Compiler einen Fehler.
Modifizierer
Klassen-, Struktur-, Modul- und Schnittstellenmemumerationen sind standardmäßig für den öffentlichen Zugriff verfügbar. Sie können ihre Zugriffsebenen mit den Zugriffsmodifizierern anpassen. Namespacemempeln werden standardmäßig für den Freundzugriff verwendet. Sie können ihre Zugriffsebenen auf öffentliche, aber nicht auf privat oder geschützt anpassen. Weitere Informationen finden Sie unter Access-Ebenen in Visual Basic.
Alle Enumerationsmitglieder haben öffentlichen Zugriff, und Sie können keine Zugriffsmodifizierer für sie verwenden. Wenn die Enumeration selbst jedoch eine eingeschränktere Zugriffsebene aufweist, hat die angegebene Enumerationszugriffsebene Vorrang.
Standardmäßig sind alle Enumerationen Typen und deren Felder Konstanten. Daher können die SharedSchlüsselwörter Staticund ReadOnly Schlüsselwörter nicht verwendet werden, wenn eine Aufzählung oder deren Member deklariert werden.
Zuweisen mehrerer Werte
Enumerationen stellen in der Regel sich gegenseitig ausschließende Werte dar. Indem Sie das FlagsAttribute Attribut in die Enum Deklaration einschließen, können Sie einer Instanz der Enumeration stattdessen mehrere Werte zuweisen. Das FlagsAttribute Attribut gibt an, dass die Aufzählung als Bitfeld behandelt wird, d. h. eine Reihe von Flags. Diese werden bitweise Enumerationen genannt.
Wenn Sie eine Aufzählung mithilfe des FlagsAttribute Attributs deklarieren, empfehlen wir, für die Werte Die Potenzen 2 zu verwenden, d. h. 1, 2, 4, 8, 16 usw. Außerdem wird empfohlen, dass "None" der Name eines Elements ist, dessen Wert 0 ist. Weitere Richtlinien finden Sie unter FlagsAttribute und Enum.
Beispiel 1
Das folgende Beispiel zeigt, wie die Enum Anweisung verwendet wird. Beachten Sie, dass das Mitglied als EggSizeEnum.Medium, und nicht als 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
Beispiel 2
Die Methode im folgenden Beispiel befindet sich außerhalb der Egg Klasse.
EggSizeEnum Daher ist vollqualifizierte als 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
Beispiel 3
Im folgenden Beispiel wird die Enum Anweisung verwendet, um einen verwandten Satz benannter Konstantenwerte zu definieren. In diesem Fall sind die Werte Farben, die Sie auswählen können, um Dateneingabeformulare für eine Datenbank zu entwerfen.
Public Enum InterfaceColors
MistyRose = &HE1E4FF&
SlateGray = &H908070&
DodgerBlue = &HFF901E&
DeepSkyBlue = &HFFBF00&
SpringGreen = &H7FFF00&
ForestGreen = &H228B22&
Goldenrod = &H20A5DA&
Firebrick = &H2222B2&
End Enum
Beispiel 4
Das folgende Beispiel zeigt Werte, die sowohl positive als auch negative Zahlen enthalten.
Enum SecurityLevel
IllegalEntry = -1
MinimumSecurity = 0
MaximumSecurity = 1
End Enum
Beispiel 5
Im folgenden Beispiel wird eine As Klausel verwendet, um die datatype Enumeration anzugeben.
Public Enum MyEnum As Byte
Zero
One
Two
End Enum
Beispiel 6
Das folgende Beispiel zeigt, wie eine bitweise Enumeration verwendet wird. Mehrere Werte können einer Instanz einer bitweisen Enumeration zugewiesen werden. Die Enum Deklaration enthält das FlagsAttribute Attribut, das angibt, dass die Enumeration als Eine Reihe von Flags behandelt werden kann.
' 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
Beispiel 7
Im folgenden Beispiel wird eine Enumeration durchlaufen. Es verwendet die GetNames Methode, um ein Array von Membernamen aus der Enumeration abzurufen und GetValues ein Array von Memberwerten abzurufen.
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