Enum-Anweisung (Visual Basic)

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

Bestandteil

Beschreibungen

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

enumeration name

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

data type

Optional. 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 ]

BestandteilBeschreibungen
member name 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. 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 (Visual Basic).

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

  • 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 bzw. 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 seinem 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

Referenz

Const-Anweisung (Visual Basic)

Dim-Anweisung (Visual Basic)

Funktionen für die Typkonvertierung (Visual Basic)

Asc

AscW

Konzepte

Implizite und explizite Konvertierungen (Visual Basic)

Konstanten und Enumerationen (Visual Basic)

Weitere Ressourcen

Konstanten und Enumerationen in Visual Basic