Enum-Anweisung (Visual Basic)

Aktualisiert: November 2007

Deklariert eine Enumeration und definiert die Werte der Member.

[ <attribute list> ] [ access modifier ]  [ Shadows ] 
Enum enumeration name [ As data type ] 
      member list
End Enum

Bestandteile

  • attribute list
    Optional. Liste der Attribute, die für diese Enumeration zutreffen. Schließen Sie die Attributliste in spitzen Klammern ("<" und ">") ein.

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

    Sie können ProtectedFriend 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.

  • enumeration name
    Erforderlich. Name der Enumeration. Informationen zu gültigen Namen finden Sie unter Namen deklarierter Elemente.

  • data type
    Erforderlich, wenn OptionStrict auf On festgelegt ist. Datentyp der Enumeration und aller zugehörigen Member.

  • member list
    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

    member name

    Erforderlich. Name dieses Members.

    initializer

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

  • EndEnum
    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. Damit wird außerdem die Lesbarkeit des Codes verbessert, weil alle zusammengehörenden Werte den gleichen Enumerationsnamen verwenden.

Enum kann nur auf Namespace- oder Modulebene verwendet werden. Dies bedeutet, dass der Deklarationskontext für eine Enumeration eine Quelldatei, ein Namespace, eine Klasse, eine Struktur, ein Modul oder eine Schnittstelle sein muss und keine Prozedur sein kann. Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen.

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 initializer für einen Member nicht angeben, initialisiert Visual Basic diesen Parameter entweder mit 0 (null) (wenn er der erste member der member list ist) oder mit einem Wert, der um eins größer ist als der unmittelbar vorhergehende member.

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 BasicRules.

  • Deklarationskontext. Eine auf Modulebene deklarierte Enumeration, die sich außerhalb jeglicher Prozedur befindet, ist eine Memberenumeration; sie ist ein Member der Klasse, der Struktur, der Schnittstelle oder des Moduls, in der/dem sie deklariert ist.

    Eine auf Namespaceebene deklarierte Enumeration, die außerhalb einer Klasse, einer Struktur, eines Moduls oder einer Schnittstelle deklariert ist, ist nur Member des Namespaces, in der sie auftritt.

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

  • Modifizierer. 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.

Datentypregeln

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

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

    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.

Verhalten

  • Zugriffsebene. 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.

  • Gültigkeitsbereich. Der Zugriff auf Memberenumerationen ist ausgehend von einer beliebigen Position in deren Klasse, Struktur, Modul oder Schnittstelle möglich. Der Zugriff auf Enumerationen für Namespacemember ist von jedem Code innerhalb dieses Namespaces möglich.

  • Qualifikation. 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.

  • Ungültige Werte. 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.

Enumerationsvariablen sind Variablen, die mit dem Enum-Datentyp deklariert wurden. Wenn Sie eine Variable auf diese Weise deklarieren, können Sie die zuzuweisenden Werte besser steuern. Allerdings können Sie immer noch einen Wert zuweisen, bei dem es sich nicht um einen Enumerationsmember handelt. Voraussetzung dafür ist jedoch, dass sein Datentyp in den Datentyp der Enumeration konvertiert werden kann. Dies ist hilfreich, wenn die Enumeration ein Flagfeld ist und Sie der Enumerationsvariablen eine Kombination aus Flags zuweisen. Das folgende Beispiel zeigt eine Zuweisung mehrerer Flags zu einer Enumerationsvariablen.

Enum filePermissions
    create = 1
    read = 2
    write = 4
    delete = 8
End Enum
Dim file1Perm As filePermissions
file1Perm = filePermissions.create Or filePermissions.read

Sämtliche Verweise auf Enumerationsmember müssen qualifiziert werden, entweder mit dem Namen einer Enumerationsvariablen oder dem Namen der Enumeration selbst. Im vorhergehenden Beispiel kann auf den ersten Member als filePermissions.create verwiesen werden, jedoch nicht als create.

Beispiel

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

Siehe auch

Konzepte

Implizite und explizite Konvertierungen

Systeminterne Konstanten und Enumerationen

Referenz

Const-Anweisung (Visual Basic)

Dim-Anweisung (Visual Basic)

Funktionen für die Typkonvertierung

Die Funktionen "Asc" und "AscW"

Weitere Ressourcen

Konstanten und Enumerationen in Visual Basic