Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

FlagsAttribute-Klasse

 

Veröffentlicht: Oktober 2016

Gibt an, dass eine Enumeration als Bitfeld, d. h. als Gruppe von Flags, behandelt werden kann.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

System.Object
  System.Attribute
    System.FlagsAttribute

[<SerializableAttribute>]
[<AttributeUsageAttribute(AttributeTargets.Enum, Inherited = false)>]
[<ComVisibleAttribute(true)>]
type FlagsAttribute = 
    class
        inherit Attribute
    end

NameBeschreibung
System_CAPS_pubmethodFlagsAttribute()

Initialisiert eine neue Instanz der FlagsAttribute-Klasse.

NameBeschreibung
System_CAPS_pubpropertyTypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.(Geerbt von „Attribute“.)

NameBeschreibung
System_CAPS_pubmethodEquals(Object)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.(Geerbt von „Attribute“.)

System_CAPS_protmethodFinalize()

Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Geerbt von „Object“.)

System_CAPS_pubmethodGetHashCode()

Gibt den Hashcode für diese Instanz zurück.(Geerbt von „Attribute“.)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_pubmethodIsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.(Geerbt von „Attribute“.)

System_CAPS_pubmethodMatch(Object)

Ruft beim Überschreiben in einer abgeleiteten Klasse gibt einen Wert, der angibt, ob diese Instanz gleich ein angegebenen Objekt ist.(Geerbt von „Attribute“.)

System_CAPS_protmethodMemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.(Geerbt von „Object“.)

System_CAPS_pubmethodToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von „Object“.)

NameBeschreibung
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.(Geerbt von „Attribute“.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.(Geerbt von „Attribute“.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).(Geerbt von „Attribute“.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.(Geerbt von „Attribute“.)

Bitfelder werden im Allgemeinen für Listen mit Elementen, die zusammen auftreten verwendet, wohingegen Enumerationskonstanten im Allgemeinen für Listen mit sich gegenseitig ausschließende Elementen verwendet werden. Deshalb dienen Bitfelder mit einer bitweisen OR-Operation zum Generieren der unbenannten Werte kombiniert werden, wohingegen Enumerationskonstanten nicht sind. Ihre Verwendung von Bitfeldern, die im Vergleich zu Enumerationskonstanten Sprachen sind unterschiedlich.

AttributeUsageAttributeDiese Klasse angewendet wird und die zugehörige Inherited Eigenschaft gibt an, false. Dieses Attribut kann nur auf Enumerationen angewendet werden.

  • Verwenden der FlagsAttribute benutzerdefiniertes Attribut für eine Enumeration, die nur, wenn eine bitweise Operation (AND, OR, exklusive oder) für einen numerischen Wert ausgeführt werden soll.

  • Definieren Sie Enumerationskonstanten in Potenzen von 2, d. h. 1, 2, 4, 8 und So weiter. Dies bedeutet, dass die einzelnen Flags in kombinierten Enumerationskonstanten nicht überschneiden.

  • Estellen Sie eine Enumerationskonstante für häufig verwendete Flagkombinationen aus. Beispielsweise ist eine Enumeration für-e/a-Dateivorgänge verwendet, enthält der Enumerationskonstanten Read = 1 und Write = 2, sollten Sie die Enumerationskonstante erstellen ReadWrite = Read OR Write, kombiniert die Read und Write Flags. Darüber hinaus kann die bitweise OR-Operation zum Kombinieren der Flags einen erweiterten Ansatz in einigen Fällen als angesehen werden, die nicht bei einfachen Aufgaben erforderlich sein sollte.

  • Seien Sie vorsichtig, wenn Sie eine negative Zahl als eine Flagenumerationskonstante definieren, da viele Flagpositionen auf 1 festgelegt werden, der Code dadurch verwirrend wird und Codierungsfehler fördern kann.

  • Eine einfache Möglichkeit zum Überprüfen, ob ein Flag, in einen numerischen Wert festgelegt ist wird zum Ausführen eines bitweisen und -Operation zwischen den numerischen Wert und die Kennzeichen Enumerationskonstante, die legt alle Bits in den numerischen Wert 0 (null), die das Flag nicht entsprechen, testen Sie, ob das Ergebnis dieses Vorgangs die Flagenumerationskonstante gleich ist.

  • Verwendung None wie der Namen des Flags Konstante aufgelistet, deren Wert 0 (null wird). Sie können keine der None Enumerationskonstante in eine bitweise AND-Operation für ein Flag zu testen, da das Ergebnis immer 0 (null) ist. Allerdings können Sie ein logisches ausführen keinen bitweisen Vergleich zwischen den numerischen Wert und die None Enumerationskonstante, um zu bestimmen, ob alle Bits in den numerischen Wert festgelegt werden.

    Wenn Sie eine Value-Aufzählung, anstatt eine Flags-Enumeration erstellen, lohnt es weiterhin zum Erstellen einer None Enumerationskonstante. Der Grund hierfür ist, dass standardmäßig der für die Enumeration verwendete Speicher mit 0 (null) initialisiert wird von der common Language Runtime. Daher, wenn Sie keine Konstante definieren, deren Wert 0 (null) ist, die Enumeration einen unzulässigen Wert enthält während der Erstellung.

    Es ist ein offensichtliche Standardfall muss Ihre Anwendung darstellen, sollten eine Enumerationskonstante, deren Wert 0 (null), um die Standardeinstellung darzustellen. Ist keine Standardfall, erwägen Sie verwenden eine Enumerationskonstante, deren Wert 0 (null), ist, die Groß-/Kleinschreibung bedeutet, die nicht von einer anderen Enumerationskonstanten dargestellt wird.

  • Definieren Sie einen Enumerationswert ausschließlich, um den Status der Enumeration selbst spiegeln nicht. Definieren Sie z. B. keine Enumerationskonstante, die lediglich das Ende der Enumeration markiert. Wenn Sie den letzten Wert der Enumeration bestimmen müssen, suchen Sie nach diesem Wert explizit. Darüber hinaus können Sie eine bereichsüberprüfung für die erste und letzte Enumerationskonstante ausführen, wenn alle Werte innerhalb des Bereichs gültig sind.

  • Geben Sie keine Enumerationskonstanten, die für die zukünftige Verwendung reserviert sind.

  • Wenn Sie definieren eine Methode oder Eigenschaft, die eine Enumerationskonstante als Wert akzeptiert, sollten Sie überprüfen des Werts. Der Grund ist, dass Sie einen numerischen Wert in den Enumerationstyp umwandeln können, selbst wenn diese numerische Wert in der Enumeration nicht definiert ist.

Das folgende Beispiel veranschaulicht die Verwendung von der FlagsAttribute Attribut, und zeigt die Auswirkung auf die ToString Methode der Verwendung von FlagsAttribute auf eine Enum Deklaration.

Derzeit ist kein Code Beispiel verfügbar, oder die Sprache wird nicht unterstützt.

Das folgende Beispiel definiert zwei Enumerationen farbbezogene SingleHue und MultiHue. Der zweite Wert ist die FlagsAttribute -Attribut; erstere hingegen nicht. Das Beispiel zeigt den Unterschied im Verhalten, wenn ein Bereich von ganzen Zahlen, z. B. ganze Zahlen, die keine zugrunde liegende Enumerationstyp, Werte darstellen der Enumerationstyp und deren zeichenfolgendarstellungen angezeigt umgewandelt werden. Beispielsweise Beachten Sie, dass 3 als dargestellt werden kann ein SingleHue bewertet werden, da 3 nicht den zugrunde liegenden Wert eines beliebigen ist SingleHue Member auf, während die FlagsAttribute Attribut macht das 3 als darstellen einer MultiHue Wert Black, Red.

Derzeit ist kein Code Beispiel verfügbar, oder die Sprache wird nicht unterstützt.

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Zurück zum Anfang
Anzeigen: