IRONSOFTWAREHOME

C# Set Flag Enum verstehen: Flaggen zuweisen

Containerize Your C# Application Easily with the .NET CLI

Tim Corey

9m 57s

Bei der Arbeit mit Berechtigungen, Konfigurationen oder Einstellungen in C# gibt es häufig Situationen, in denen mehrere Werte in einer einzigen Variablen gespeichert werden müssen. Anstatt separate boolesche Werte für jede Einstellung zu verwenden, können wir Flag Enums verwenden. Diese Methode nutzt binäre Operationen, um mehrere Optionen innerhalb eines einzigen Integer-Wertes effizient zu verwalten.

In diesem Artikel werden wir einen tieferen Blick auf das Setzen von Flag Enums in C# werfen, basierend auf dem Video von Tim Corey, Binary in C#: Assigning Flags in 10 Minutes or Less. Tim zeigt, wie man mehrere Werte mithilfe von Binäroperationen zuweist und so den Code effizienter und lesbarer macht. Lassen Sie uns eintauchen.

Einführung in Flag Enums

Tim beginnt mit der Erklärung, dass diese Lektion Teil einer Reihe zum Verständnis von Binärdateien in C# ist. In diesem Video konzentriert er sich auf die Zuweisung von Flags mithilfe von Binäroperationen. Flags ermöglichen es uns, mehrere Werte in einer einzigen Ganzzahl zu speichern, wodurch die Verwaltung von Berechtigungen viel einfacher und effizienter wird.

Mehrere Flags mit Bitwise OR zuweisen

Tim demonstriert, wie wir mehrere Berechtigungen mit dem bitweisen ODER (|) Operator. Er erstellt eine Enumeration SystemPermissions, die verschiedene Berechtigungsstufen wie SQL, Redis und BuildSystem umfasst. Anstatt mehrere Variablen zu verwenden, können wir alle Berechtigungen in einem einzigen Wert speichern.

Beispiel für die Zuweisung mehrerer Berechtigungen an eine Variable:

// Assume that SystemPermissions is an enum with values SQL, Redis, and BuildSystem
SystemPermissions TimPermissions = SystemPermissions.SQL | SystemPermissions.Redis;

// Print the current permissions - it will include both SQL and Redis
Console.WriteLine(TimPermissions);

Binärdarstellung anzeigen

Um besser zu verstehen, was passiert, schlägt Tim vor, den Ganzzahlwert mit Convert.ToString(value, 2) in seine Binärform umzuwandeln. So können wir visualisieren, welche Bits gesetzt sind:

// Convert the permissions to a binary string to see the set bits
Console.WriteLine(Convert.ToString((int)TimPermissions, 2));

Dies zeigt, dass verschiedene Bitpositionen verschiedenen Berechtigungen entsprechen, und demonstriert, wie wir mehrere Einstellungen in einer Ganzzahl speichern können.

Hinzufügen weiterer Berechtigungen mit OR-Equals

Tim erklärt, dass wir weitere Berechtigungen dynamisch hinzufügen können, indem wir die |=-Operator:

// Add the BuildSystem permission to the existing permissions
TimPermissions |= SystemPermissions.BuildSystem;

// Print the updated permissions - it now includes SQL, Redis, and BuildSystem
Console.WriteLine(TimPermissions);

Die 32-Bit-Grenze verstehen

Tim weist auf eine wichtige Überlegung hin: Der Datentyp Integer in C# hat eine 32-Bit-Grenze. Das bedeutet, dass wir nur bis zu 32 eindeutige Flags in einem int speichern können. Wenn wir mehr als 32 Flags benötigen, sollten wir in Betracht ziehen, ein long (64-Bit) oder sogar mehrere Werte zu verwenden. In den meisten Fällen sind 32 Zeichen jedoch mehr als genug.

Flags in einer Datenbank speichern

Einer der größten Vorteile der Verwendung von Flag-Enums ist, dass sie effizient in einer Datenbank gespeichert werden können. Anstatt mehrere boolesche Spalten zu speichern, können wir einen einzigen Integer-Wert speichern, der alle Berechtigungen repräsentiert. Tim erklärt, dass dieser Ansatz die Komplexität der Datenbank und die Speicheranforderungen erheblich reduziert.

Zum Beispiel, wenn TimPermissions als 37 gespeichert ist, stellt es eine Kombination dar von:

  • SQL (Bit 1)
  • Redis (Bit 3)
  • BuildSystem (Bit 5)

Wenn wir diesen Wert aus der Datenbank abrufen, können wir ihn leicht entschlüsseln, um die aktiven Berechtigungen zu bestimmen.

Abschluss

Abschließend hebt Tim die Leistungsfähigkeit von Flag Enums hervor. Mit binären Operationen können wir mehrere Zustände innerhalb einer einzigen Ganzzahl effizient verwalten. Diese Technik verbessert die Leistung, vereinfacht die Datenspeicherung und macht unseren Code besser lesbar.

Wenn Sie diesen Ansatz verfolgen, können Sie ein sauberes, skalierbares Berechtigungsverwaltungssystem mit C# Flag Enums implementieren. Sehen Sie sich das vollständige Video an, um ein besseres Verständnis zu bekommen.

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

OR
bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Kundenlogos von Iron Software
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.