Freigeben über


Enum-Anweisung (Visual Basic)

Deklariert eine Enumeration und definiert die Werte der Member.

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

Teile

Bestandteil

Beschreibung

attributelist

Optional. Liste der Attribute, die für diese Enumeration zutreffen. Müssen Sie die Attributliste in spitzen Klammern ("<"und">").

Die FlagsAttribute -Attribut gibt an, dass der Wert einer Instanz der Enumeration mehrere Enumerationsmember kann und dass jedes Element ein Bit-Feld den Wert der Enumeration darstellt.

accessmodifier

Optional. Gibt an, welcher Code auf diese Enumeration zugreifen kann. Einer der folgenden Werte ist möglich:

Sie können Protected Friend angeben, um den Zugriff von Code innerhalb der Klasse einer Enumeration, einer abgeleiteten Klasse oder der gleichen Assembly zuzulassen.

Shadows

Optional. Gibt an, dass diese Enumeration ein Programmierelement mit derselben Bezeichnung oder eine Gruppe überladener Elemente in einer Basisklasse erneut deklariert und ausblendet. Sie können Shadows nur für die Enumeration selbst, nicht für einen ihrer Member angeben.

enumerationname

Erforderlich. Name der Enumeration. Informationen zu gültigen Namen finden Sie unter Namen deklarierter Elemente (Visual Basic).

datatype

Optional. Datentyp der Enumeration und aller zugehörigen Member.

memberlist

Erforderlich. Liste mit Memberkonstanten, die in dieser Anweisung deklariert werden. Auf einzelnen Quellcodezeilen werden mehrere Member aufgeführt.

Alle member haben folgende Syntax und Bestandteile: [<attribute list>] member name [ = initializer ]

Bestandteil

Beschreibung

membername

Erforderlich. Name dieses Members.

initializer

Optional. Ausdruck, der zur Kompilierungszeit ausgewertet und diesem Member zugewiesen wird.

End Enum

Beendet den Enum-Block.

Hinweise

Wenn Sie eine Gruppe unveränderlicher Werte haben, die logisch zusammengehören, können Sie sie zusammen in einer Enumeration definieren. Die Namen für die Enumeration und ihre Member sind aussagekräftiger und einprägsamer als die Werte. Sie können die Enumerationsmember dann in vielen Stellen im Code verwenden.

Die Vorteile der Verwendung von Enumerationen umfassen Folgendes:

  • Reduzierung von Fehlern, die durch das Übertragen von Zahlen oder falsch eingegebene Zahlen verursacht werden

  • Vereinfachen der nachträglichen Änderung von Werten

  • Macht der Code leichter zu lesen, was bedeutet, dass es weniger wahrscheinlich ist, dass Störungen eingeführt werden.

  • Sicherstellung der Vorwärtskompatibilität. Wenn Sie Enumerationen verwenden, ist Ihr Code weniger wahrscheinlich fehl, wenn in der Zukunft jemand die Werte Veränderungen, die den Membernamen entsprechen.

Eine Enumeration hat einen Namen, einen zugrunde liegenden Datentyp und eine Menge von Elementen. Jedes Element stellt eine Konstante.

Eine Enumeration, die auf die Klasse, Struktur, Modul oder Schnittstellenebene außerhalb einer Prozedur deklariert ist ein Memberenumeration. Es ist ein Mitglied der Klasse, Struktur, Modul oder Schnittstelle, die es deklariert.

Enumerationen für Namespacemember können von überall innerhalb ihrer Klasse, Struktur, Modul oder Schnittstelle zugegriffen werden. Code außerhalb einer Klasse, einer Struktur oder eines Moduls muss den Namen einer Memberenumeration mit dem Namen der Klasse, der Struktur oder des Moduls qualifizieren. Sie können vermeiden, verwenden Sie vollqualifizierte Namen durch Hinzufügen einer Einfuhren -Anweisung, um die Quelldatei.

Eine Enumeration, die auf Namespaceebene außerhalb jeder Klasse, Struktur, Modul oder Schnittstelle deklariert ist Mitglied des Namespaces, in dem es angezeigt wird.

Die Deklarationskontext für eine Enumeration eine Quelldatei, Namespace, Klasse, Struktur, Modul oder Schnittstelle sein muss und keine Prozedur sein kann. Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen (Visual Basic).

Sie können Attribute auf die Enumeration als Ganzes anwenden, nicht aber auf deren einzelne Member. Ein Attribut liefert den Metadaten der Assembly Informationen.

Datentyp

Die Enum-Anweisung kann den Datentyp einer Enumeration deklarieren. Jeder Member übernimmt den Datentyp der Enumeration. Sie können Byte, Integer, Long, SByte, Short, UInteger, ULong oder UShort angeben.

Wenn Sie keinen datatype für die Enumeration angeben, übernimmt jeder Member den Datentyp von seinem initializer. Wenn Sie sowohl datatype als auch initializer angeben, muss der Datentyp initializer in datatype konvertiert werden können. Wenn weder datatype noch initializer angegeben werden, wird standardmäßig Integer als Datentyp verwendet.

Initialisieren von Membern

Die Enum-Anweisung kann den Inhalt von ausgewählten Membern in der memberlist initialisieren. Der initializer wird verwendet, um einen Ausdruck bereitzustellen, der dem Member zugewiesen werden soll.

Wenn Sie nicht angeben initializer für ein Mitglied der Visual Basic initialisiert es entweder 0 (null) (wenn es die erste ist member in memberlist), oder auf einen Wert um eins größer als der unmittelbar vor member.

Bei dem in initializer bereitgestellten Ausdruck kann es sich um eine Kombination aus Literalen handeln, um andere, bereits definierte Konstanten sowie um bereits definierte Enumerationsmember, einschließlich eines vorherigen Members dieser Enumeration. Zur Kombination dieser Elemente können Sie arithmetische und logische Operatoren verwenden.

Variablen und Funktionen können in initializer nicht verwendet werden. Sie können jedoch Konvertierungsschlüsselwörter wie CByte und CShort verwenden. In Kombination mit einem konstanten String- oder Char-Argument, das zur Kompilierungszeit ausgewertet wird, kann auch AscW verwendet werden.

Enumerationen dürfen keine Gleitkommawerte haben. Wenn ein Mitglied einen Gleitkommawert zugewiesen wird und Option Strict auf festgelegt ist, tritt ein Compilerfehler auf. Wenn Option Strict deaktiviert ist, der Wert wird automatisch konvertiert, in die Enum Typ.

Wenn der Wert eines Members den für den zugrunde liegenden Datentyp zulässigen Bereich überschreitet oder der Member mit dem zulässigen Höchstwert initialisiert wird, gibt der Compiler eine Fehlermeldung aus.

Modifizierer

Enumerationen für Klassen-, Struktur-, Modul- und Schnittstellenmember verfügen standardmäßig über Public-Zugriff. Sie können ihre Zugriffsebenen mit den Zugriffsmodifizierern anpassen. Enumerationen für Namespacemember haben standardmäßig Friend-Zugriff. Sie können ihre Zugriffsebenen auf Public einstellen, jedoch nicht auf Private oder Protected. Weitere Informationen finden Sie unter Zugriffsebenen in Visual Basic.

Alle Enumerationsmember haben Public-Zugriff. Es können keine Zugriffsmodifizierer dafür verwendet werden. Wenn die Enumeration an sich jedoch eine begrenztere Zugriffsebene aufweist, hat die angegebene Zugriffsebene der Enumeration Vorrang.

Standardmäßig sind alle Enumerationen Typen, und ihre Felder sind Konstanten. Deshalb können die Schlüsselwörter Shared, Static und ReadOnly nicht bei der Deklaration einer Enumeration oder ihrer Member verwendet werden.

Zuweisen mehrerer Werte

Enumerationen stellen normalerweise sich gegenseitig ausschließende Werten dar. Durch die Aufnahme der FlagsAttribute Attribut in der Enum Erklärung, Sie können stattdessen Zuweisen mehrerer Werte eine Instanz der Enumeration. Die FlagsAttribute Attribut gibt an, dass die Enumeration als Bitfeld, d. h. eine Gruppe von Flags behandelt werden. Dies nennt man bitweise Enumerationen.

Beim Deklarieren einer Enumeration mithilfe der FlagsAttribute -Attribut, wird empfohlen, für die Werte Potenzen von 2 ist, 1, 2, 4, 8, 16 und So weiter verwenden. Wir empfehlen auch, dass "None" der Name eines Elements, dessen Wert 0 ist. Zusätzliche Richtlinien finden Sie unter FlagsAttribute und Enum.

Beispiel

Das folgende Beispiel veranschaulicht die Enum Anweisung. Hinweis, der der Member als genannt 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

Die Methode im folgenden Beispiel befindet sich außerhalb der Egg Klasse. Daher EggSizeEnum wird als vollqualifizierter 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

Im folgenden Beispiel wird mit der Enum-Anweisung eine zugehörige Gruppe benannter Konstantenwerte definiert. In diesem Fall handelt es sich bei den Werten um Farben, die Ihnen für Dateneingabeformulare einer Datenbank zur Verfügung stehen.

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

Das folgende Beispiel zeigt Werte mit positiven und negativen Zahlen.

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

Im folgenden Beispiel ein As Klausel zum Angeben der datatype einer Enumeration.

Public Enum MyEnum As Byte
  Zero
  One
  Two
End Enum

Das folgende Beispiel veranschaulicht eine bitweise Enumeration. Eine Instanz eine bitweise Enumeration können mehrere Werte zugewiesen werden. Die Enum enthält die FlagsAttribute -Attribut, das angibt, dass die Enumeration als Satz 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

Das folgende Beispiel durchläuft eine Enumeration. Es verwendet die GetNames -Methode, um ein Array von Elementnamen aus der Enumeration abgerufen und GetValues ein Array Memberwerte abrufen.

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

Siehe auch

Referenz

Enum

Const-Anweisung (Visual Basic)

Dim-Anweisung (Visual Basic)

Funktionen für die Typkonvertierung (Visual Basic)

AscW

Konzepte

Implizite und explizite Konvertierungen (Visual Basic)

Konstanten und Enumerationen (Visual Basic)