IRONSOFTWAREHOME

Zrozumieć C# Set Flag Enum: Przypisywanie flag

Łatwo przekształć swoją aplikację C# przy użyciu .NET CLI

Tim Corey

9m 57s

Pracując z uprawnieniami, konfiguracjami lub ustawieniami w C#, często spotykamy się z sytuacjami, w których trzeba przechować wiele wartości w jednej zmiennej. Zamiast używać oddzielnych wartości logicznych dla każdego ustawienia, możemy użyć flag Enum. Ta metoda wykorzystuje operacje binarne do efektywnego zarządzania wieloma opcjami w jednej wartości liczbowej.

W tym artykułe przyjrzymy się bliżej, jak ustawiać flagi Enum w C# na podstawie filmu Tima Coreya, Binary in C#: Assigning Flags in 10 Minutes or Less. Tim pokazuje, jak przypisać wiele wartości za pomocą operacji binarnych, co sprawia, że nasz kod jest bardziej efektywny i czytelny. Zanurzmy się w temat.

Wprowadzenie do flag Enum

Tim zaczyna od wyjaśnienia, że ta lekcja jest częścią serii na temat zrozumienia binariów w C#. W szczególności w tym filmie skupia się na tym, jak przypisywać flagi za pomocą operacji binarnych. Flagi pozwalają przechowywać wiele wartości w jednej liczbie całkowitej, co znacznie ułatwia i usprawnia zarządzanie uprawnieniami.

Przypisywanie wielu flag za pomocą bitowego OR

Tim demonstruje, jak możemy łączyć wiele uprawnień za pomocą bitowego operatora OR (|) operator. Tworzy enumerację SystemPermissions, która zawiera różne poziomy uprawnień, takie jak SQL, Redis i BuildSystem. Zamiast używać wielu zmiennych, możemy przechowywać wszystkie uprawnienia w jednej wartości.

Przykład przypisania wielu uprawnień do zmiennej:

// 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);

Wyświetlanie reprezentacji binarnej

Aby lepiej zrozumieć, co się dzieje, Tim sugeruje konwersję wartości całkowitej na format binarny przy użyciu Convert.ToString(value, 2). Pozwala to wizualizować, które bity są ustawione:

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

Pokazuje to, że różne pozycje bitowe odpowiadają różnym uprawnieniom, demonstrując, jak można przechowywać wiele ustawień w jednej liczbie całkowitej.

Dodawanie większej liczby uprawnień za pomocą OR-Equals

Tim wyjaśnia, że możemy dynamicznie dodawać więcej uprawnień za pomocą operatora `|= 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);

Rozumienie limitu 32-bitowego

Tim podkreśla ważną kwestię: typ danych liczbowych w C# ma limit 32-bitowy. Oznacza to, że możemy przechować tylko do 32 unikalnych flag w int. Jeśli potrzebujemy więcej niż 32 flagi, powinniśmy rozważyć użycie long (64-bitowego) lub nawet wielu wartości. Jednakże, w większości przypadków 32 flagi są więcej niż wystarczające.

Przechowywanie flag w bazie danych

Jedną z największych zalet używania flag Enum jest to, że można je wydajnie przechowywać w bazie danych. Zamiast przechowywać wiele kolumn logicznych, możemy przechowywać jedną wartość liczbową reprezentującą wszystkie uprawnienia. Tim wyjaśnia, że takie podejście znacząco zmniejsza złożoność bazy danych i wymagania dotyczące przechowywania.

Na przykład, jeśli TimPermissions jest przechowywane jako 37, reprezentuje kombinację:

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

Kiedy pobieramy tę wartość z bazy danych, możemy łatwo ją zdekodować, aby określić aktywne uprawnienia.

Wnioski

Tim kończy, podkreślając moc flag Enum. Korzystając z operacji binarnych, możemy efektywnie zarządzać wieloma stanami w jednej liczbie całkowitej. Ta technika poprawia wydajność, upraszcza przechowywanie danych i czyni nasz kod bardziej czytelnym.

Stosując to podejście, można wdrożyć czysty, skalowalny system zarządzania uprawnieniami przy użyciu flag Enum w C#. Obejrzyj pełne wideo, aby lepiej zrozumieć.

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

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Otrzymaj swoją Konsultację Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta