C# Enum (Wyliczenie) z przykładem
⚡ Inteligentne podsumowanie
Wyliczenia w C# definiują nazwany zestaw stałych wartości całkowitych, takich jak dni tygodnia, co ułatwia czytanie i utrzymanie kodu. Słowo kluczowe enum deklaruje te stałe stałe jednorazowo, do ponownego wykorzystania w całym programie.

Wyliczenie C#
Wyliczenie jest używane w dowolnym języku programowania w celu zdefiniowania stałego zestawu wartości. Na przykład dni tygodnia można zdefiniować jako wyliczenie i wykorzystać je w dowolnym miejscu programu. W języku C# wyliczenie definiuje się za pomocą słowa kluczowego „enum”.
Zobaczmy przykład użycia słowa kluczowego „enum”.
W naszym przykładzie zdefiniujemy wyliczenie zwane dniami, w którym będą przechowywane dni tygodnia. W każdym przykładzie zmodyfikujemy tylko główną funkcję w naszym pliku Program.cs.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { enum Days{Sun,Mon,tue,Wed,thu,Fri,Sat}; static void Main(string[] args) { Console.Write(Days.Sun); Console.ReadKey(); } } }
Code Wyjaśnienie:-
- „Wyliczenie” typ danych jest określony w celu zadeklarowania wyliczenia. Nazwa wyliczenia to Dni. Wszystkie dni tygodnia są określone jako wartości wyliczenia.
- Na koniec funkcja console.write służy do wyświetlenia jednej z wartości wyliczenia.
Jeśli powyższy kod został wpisany poprawnie i program zostanie pomyślnie wykonany, wyświetlony zostanie następujący komunikat.
Wyjście:
Z danych wyjściowych wynika, że wartość wyliczenia „Sun” jest wyświetlana w konsoli.
Dlaczego warto używać typów wyliczeniowych w języku C#?
Wyliczenia sprawiają, że program jest łatwiejszy w czytaniu, bezpieczniejszy i prostszy w utrzymaniu. Zamiast rozrzucać niewyjaśnione liczby, czasami nazywane liczbami magicznymi, po całym kodzie, wyliczenie nadaje każdej wartości opisową nazwę, która określa jej przeznaczenie.
- Czytelność: Nazwa taka jak Days.Fri jest o wiele bardziej oczywista niż liczba 5, więc każdy, kto przeczyta kod, od razu zrozumie jego znaczenie.
- Bezpieczeństwo typu: Zmienna zadeklarowana przy użyciu typu wyliczeniowego może zawierać tylko jeden ze zdefiniowanych elementów, co zapobiega pojawianiu się nieprawidłowych wartościping widok
- Łatwość konserwacji: Powiązane stałe znajdują się w jednym miejscu, więc dodanie lub zmiana nazwy wartości powoduje spójną aktualizację całego programu.
- Wiązanie danych: Platformy takie jak WPF i ASP.NET umożliwiają powiązanie wyliczeń z listą rozwijaną, co czyni je przydatnymi przy tworzeniu interfejsów użytkownika.
Ponieważ kompilator sprawdza każde przypisanie względem dozwolonych elementów, typy wyliczeniowe pomagają wykryć błędy na wczesnym etapie, jeszcze przed uruchomieniem programu.
Przypisywanie wartości niestandardowych do wyliczenia C#
Domyślnie C# przypisuje pierwszemu elementowi wyliczenia wartość 0 i zwiększa każdy kolejny element o jeden. W powyższym wyliczeniu „Dni” (Days) „Niedz” wynosi 0, „Pon” wynosi 1, a „Sob” wynosi 6. Można zastąpić te wartości domyślne, przypisując im konkretne liczby.
- Wartości jawne: Zapisanie poziomu wyliczeniowego {Niski = 1, Średni = 5, Wysoki = 10} powoduje ustawienie każdego elementu na wybraną liczbę zamiast domyślnej sekwencji.
- Częściowe zadanie: Jeżeli przypiszesz wartość tylko niektórym członkom, kompilator będzie kontynuował numerację od ostatniej przypisanej wartości dla kolejnych członków.
- Typ podstawowy: Domyślnie wyliczenia przechowują swoje elementy jako int, ale możesz je zapisać jako byte, short lub long, aby zaoszczędzić pamięć lub rozszerzyć zakres.
Wartości niestandardowe są przydatne, gdy liczby muszą odpowiadać systemowi zewnętrznemu, np. kodom bazy danych lub stałym protokołu, tak aby wyliczenie dokładnie odzwierciedlało rzeczywiste dane.
Jak konwertować typy wyliczeniowe C# na int, string i flagi
Język C# często musi przenieść wartość wyliczeniową do innej formy, na przykład zapisać ją jako liczbę lub odczytać z tekstu. Konwersje te odbywają się na kilka standardowych sposobów.
- Wyliczenie na int: Jawne rzutowanie, takie jak (int)Days.Wed, zwraca podstawową liczbę całkowitą, co jest przydatne do przechowywania lub wykonywania obliczeń arytmetycznych.
- int na enum: Rzutowanie w przeciwnym kierunku, na przykład (Days)3, zamienia liczbę z powrotem na odpowiadający jej element wyliczeniowy.
- Ciąg do wyliczenia: Enum.Parse i bezpieczniejsza wersja Enum.TryParse konwertują nazwę, np. „Piątek” na element Days.Piątek bez zgłaszania nieprawidłowego tekstu.
- Wyliczenie na ciąg: Wywołanie ToString na dowolnym elemencie zwraca jego nazwę, więc Days.Sun.ToString() tworzy „Sun” do wyświetlenia lub zarejestrowania.
- Lista członków: Enum.GetValues i Enum.GetNames zwracają wszystkie wartości i nazwy, co jest przydatne przy wypełnianiu menu lub sprawdzaniu poprawności danych wejściowych.
Gdy wyliczenie powinno reprezentować kombinację wyborów, a nie jeden, zastosuj atrybut Flags i nadaj każdemu elementowi potęgę liczby dwa, np. 1, 2, 4 i 8. Następnie możesz połączyć elementy za pomocą operatora bitowego OR i przetestować konkretną opcję za pomocą metody HasFlag.
Te techniki konwersji pozwalają na czyste przemieszczanie się wyliczeń między czytelnymi nazwami, zapisanymi liczbami i połączonymi zestawami flag.ping reszta programu jest bezpieczna pod względem typów i łatwa do zrozumienia.


