Enum-Klasse
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Der Enum-Typ macht die folgenden Member verfügbar.
| Name | Beschreibung | |
|---|---|---|
![]() ![]() ![]() ![]() | CompareTo | |
![]() ![]() ![]() ![]() | Equals | |
![]() ![]() ![]() ![]() | Finalize | |
![]() ![]() ![]() ![]() | Format | |
![]() ![]() ![]() ![]() | GetHashCode | |
![]() ![]() ![]() ![]() | GetName | |
![]() ![]() ![]() ![]() | GetNames | |
![]() ![]() ![]() ![]() | GetType | |
![]() ![]() | GetTypeCode | |
![]() ![]() ![]() ![]() ![]() | GetUnderlyingType | |
![]() ![]() ![]() ![]() | GetValues | |
![]() ![]() ![]() | HasFlag | |
![]() ![]() ![]() ![]() ![]() | IsDefined | |
![]() ![]() ![]() ![]() | MemberwiseClone | |
![]() ![]() ![]() ![]() | Parse(Type, String) | |
![]() ![]() ![]() ![]() ![]() | Parse(Type, String, Boolean) | |
![]() ![]() | ToObject(Type, Byte) | |
![]() ![]() | ToObject(Type, Int16) | |
![]() ![]() | ToObject(Type, Int32) | |
![]() ![]() | ToObject(Type, Int64) | |
![]() ![]() ![]() ![]() ![]() | ToObject(Type, Object) | |
![]() ![]() | ToObject(Type, SByte) | |
![]() ![]() | ToObject(Type, UInt16) | |
![]() ![]() | ToObject(Type, UInt32) | |
![]() ![]() | ToObject(Type, UInt64) | |
![]() ![]() ![]() ![]() | ToString() | |
![]() ![]() | ToString(IFormatProvider) | Veraltet. |
![]() ![]() ![]() ![]() | ToString(String) | |
![]() ![]() | ToString(String, IFormatProvider) | Veraltet. |
![]() ![]() ![]() ![]() | TryParse(TEnum)(String, TEnum) | |
![]() ![]() ![]() ![]() | TryParse(TEnum)(String, Boolean, TEnum) |
| Name | Beschreibung | |
|---|---|---|
![]() ![]() ![]() | IConvertible.ToBoolean | Infrastruktur. |
![]() ![]() ![]() | IConvertible.ToByte | Infrastruktur. |
![]() ![]() ![]() | IConvertible.ToChar | Infrastruktur. |
![]() ![]() ![]() | IConvertible.ToDateTime | Infrastruktur. |
![]() ![]() ![]() | IConvertible.ToDecimal | Infrastruktur. |
![]() ![]() ![]() | IConvertible.ToDouble | Infrastruktur. |
![]() ![]() ![]() | IConvertible.ToInt16 | Infrastruktur. |
![]() ![]() ![]() | IConvertible.ToInt32 | Infrastruktur. |
![]() ![]() ![]() | IConvertible.ToInt64 | Infrastruktur. |
![]() ![]() ![]() | IConvertible.ToSByte | Infrastruktur. |
![]() ![]() ![]() | IConvertible.ToSingle | Infrastruktur. |
![]() ![]() ![]() | IConvertible.ToType | Infrastruktur. |
![]() ![]() ![]() | IConvertible.ToUInt16 | Infrastruktur. |
![]() ![]() ![]() | IConvertible.ToUInt32 | Infrastruktur. |
![]() ![]() ![]() | IConvertible.ToUInt64 | Infrastruktur. |
![]() ![]() ![]() ![]() | IFormattable.ToString | Infrastruktur. Veraltet. |
Erstellen eines Enumerationstyps
Vorsicht |
|---|
Instanziieren eines Enumerationstyps
Mit den Funktionen einer bestimmten Programmiersprache, um einen ganzzahligen Wert in einen Enumerationswert umzuwandeln (wie in C#) oder zu konvertieren (wie in Visual Basic). Im folgenden Beispiel wird ein ArrivalStatus-Objekt erstellt, dessen Wert auf diese Weise gleich ArrivalStatus.Early ist. Durch Aufrufen von dessen implizitem Standardkonstruktor. Wie das folgende Beispiel zeigt, beträgt der zugrunde liegende Wert der Enumerationsinstanz in diesem Fall 0. Dies ist notwendigerweise jedoch nicht der Wert einer gültigen Konstante in der Enumeration. Durch das Aufrufen der Parse-Methode oder TryParse-Methode, um eine Zeichenfolge zu analysieren, die den Namen einer Konstante in der Enumeration enthält. Weitere Informationen finden Sie im Abschnitt Analyse von Enumerationswerten. Durch das Aufrufen der ToObject-Methode, um einen ganzzahligen Wert in einen Enumerationstyp zu konvertieren. Weitere Informationen finden Sie im Abschnitt Ausführen von Konvertierungen.
Best Practices für die Enumeration
Wenn Sie keinen Enumerationsmember definiert haben, dessen Wert 0 ist, erwägen Sie, eine aufgelistete None-Konstante zu erstellen. Der für die Enumeration verwendete Speicher wird von der Common Language Runtime standardmäßig mit 0 (null) initialisiert. Daher enthält die Enumeration einen ungültigen Wert, wenn Sie sie erstellen, ohne eine Konstante zu definieren, deren Wert 0 (null) ist. Wenn für die Anwendung ein offensichtlicher Standardfall erforderlich ist, sollten Sie für dessen Darstellung eine Enumerationskonstante verwenden, deren Wert 0 (null) ist. Wenn kein Standardwert erforderlich ist, sollten Sie eine Enumerationskonstante mit dem Wert 0 (null) verwenden. Damit wird der Fall dargestellt, für den keine anderen Enumerationskonstanten festgelegt wurden. Geben Sie keine Enumerationskonstanten an, die für die zukünftige Verwendung reserviert sind. Wenn Sie eine Methode oder Eigenschaft definieren, die eine Enumerationskonstante als Wert akzeptiert, sollten Sie den Wert validieren. Sie können dann einen numerischen Wert in den Enumerationstyp konvertieren, auch wenn der numerische Wert nicht in der Enumeration definiert ist.
Ausführen von Vorgängen mit Enumerationen
Ausführen von Konvertierungen
Analysieren von Enumerationswerten
Formatieren von Enumerationswerten
Durchlaufen von Enumerationsmembern
Sie können die GetNames-Methode aufrufen, um ein Zeichenfolgenarray abzurufen, das die Namen der Enumerationsmember enthält. Danach können Sie für jedes Element des Zeichenfolgenarrays die Parse-Methode aufrufen, um die Zeichenfolge in ihren entsprechenden Enumerationswert zu konvertieren. Dieser Ansatz wird anhand des folgenden Beispiels veranschaulicht. Sie können die GetValues-Methode aufrufen, um ein Array abzurufen, das die zugrunde liegenden Werte in der Enumeration enthält. Danach können Sie für jedes Element des Arrays die ToObject-Methode aufrufen, um die ganze Zahl in ihren entsprechenden Enumerationswert zu konvertieren. Dieser Ansatz wird anhand des folgenden Beispiels veranschaulicht.
Nicht ausschließliche Member und das Flags-Attribut
Verwenden Sie das benutzerdefinierte FlagsAttribute-Attribut nur dann für eine Enumeration, wenn eine bitweise Operation (AND, OR, EXCLUSIVE OR) mit einem numerischen Werte ausgeführt werden soll. Definieren Sie Enumerationskonstanten in Potenzen von zwei, d. h., 1, 2, 4, 8 usw. Dies bedeutet, dass sich die einzelnen Flags in kombinierten Enumerationskonstanten nicht überschneiden. Sie sollten eine Enumerationskonstante für häufig verwendete Flagkombinationen erstellen. Wenn Sie z. B. über eine Enumeration für Datei-E/A-Vorgänge verwenden, die die Enumerationskonstanten Read = 1 und Write = 2 enthält, sollten Sie die Enumerationskonstante ReadWrite = Read OR Write erstellen, die das Read-Flag und das Write-Flag zusammenfasst. Außerdem könnte der zum Kombinieren der Flags verwendete bitweise OR-Vorgang in bestimmten Situationen als erweitertes Konzept angesehen werden, in denen einfache Aufgaben ausgeführt werden sollten. Seien Sie beim Definieren negativer Zahlen als Flagenumerationskonstanten umsichtig, da viele Flagpositionen auf 1 festgelegt werden, wodurch der Code verwirren und Codierungsfehler verursachen könnte. Eine zweckmäßige Möglichkeit, zu testen, ob ein Flag in einem numerischen Wert festgelegt wird, besteht im Aufrufen der HasFlag-Instanzmethode, wie im folgenden Beispiel gezeigt. Dies entspricht der Ausführung eines bitweisen AND-Vorgangs zwischen dem numerischen Wert und der Flagenumerationskonstante, bei dem alle Bits der numerischen Werte, die nicht dem Flag entsprechen, auf 0 (null) festgelegt werden, und dem anschließenden Test, ob das Ergebnis des Vorgangs gleich der Flagenumerationskonstante ist. Dies ist im folgenden Codebeispiel gezeigt. Verwenden Sie als Namen der Flagenumerationskonstante None, dessen Wert 0 (null) ist. Sie können die None-Enumerationskonstante nicht in einem bitweisen AND-Vorgang zum Testen eines Flags verwenden, da das Ergebnis immer 0 (null) ist. Sie können aber einen logischen (nicht bitweisen) Vergleich des numerischen Werts und der None-Enumerationskonstante durchführen, um zu bestimmen, ob in dem numerischen Wert Bits festgelegt wurden. Dies ist im folgenden Codebeispiel gezeigt. Definieren Sie keinen Enumerationswert, um ausschließlich den Zustand der Enumeration selbst darzustellen. Definieren Sie beispielsweise keine Enumerationskonstante, die lediglich das Ende der Enumeration kennzeichnet. Wenn Sie den letzten Wert der Enumeration bestimmen müssen, überprüfen Sie diesen Wert explizit. Sie können des Weiteren eine Bereichsprüfung für die erste und letzte Enumerationskonstante durchführen, wenn alle Werte in dem Bereich gültig sind.
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.


