Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską. Czytaj więcej.

Wyliczenia są użytecznym typem danych, który pozwala zdefiniować listę nazwanych opcji dla zmiennej. Na przykład, jeśli chcesz przechowywać każdy dzień tygodnia, możesz użyć wyliczenia do przedstawienia prawidłowych wartości.

Wyliczenia ułatwiają czytanie i pisanie kodu, zachęcając do używania znaczących nazw i ograniczając wartości, których można użyć. Często wygodnie jest używać instrukcji switch do obsługi możliwych wartości wyliczenia.

Wyliczenia można deklarować i używać w wielu językach programowania, w tym w języku C#.

Jak zadeklarować wyliczenie w C#

W języku C# zwykle dekalujesz wyliczenia na poziomie przestrzeni nazw. Na przykład w aplikacji konsolowej języka C# można zadeklarować wyliczenia jako właściwości klasy. Możesz zobaczyć przykład w tym Repozytorium GitHub.

klasaProgram
{
wyliczenie dzień powszedni {
Poniedziałek,
Wtorek,
Środa,
Czwartek,
Piątek,
Sobota,
Niedziela
}
instagram viewer

statycznypróżniaGłówny(strunowy[] argumenty)
{

}
}

Kiedy deklarujesz wyliczenie, każda opcja otrzymuje wartość całkowitą reprezentującą jej indeks. Domyślnie pierwsza wartość w wyliczeniu ma wartość indeksu równą 0. Aby to zmienić, możesz określić własny indeks dla pierwszego elementu podczas deklarowania wyliczenia:

wyliczenie dzień powszedni { 
poniedziałek = 1,
Wtorek,
Środa,
Czwartek,
Piątek,
Sobota,
Niedziela
}

W tym przypadku indeks pierwszego elementu Poniedziałek zaczyna się o 1. Indeks następnego elementu Wtorek będzie 2, i tak dalej.

Jak uzyskać dostęp do wartości wyliczeniowej w języku C#

Dostęp do wartości przechowywanych w wyliczeniach można uzyskać na wiele różnych sposobów. Wartością zwracaną dla każdej opcji w wyliczeniu jest indeks. W tym przykładzie wartość Dzień powszedni. Piątek Jest 5.

Jednym ze sposobów na odzyskanie nazwy enum jest użycie metody wyliczenia. PobierzNazwę() funkcjonować. To pobiera nazwę opcji o indeksie 5:

strunowy piątek = wyliczenie. PobierzNazwę(typ(Dzień powszedni), Dzień powszedni. Piątek);
Konsola. Wiersz zapisu(„Dzięki Bogu jest” + piątek + "!");
// Dane wyjściowe = Dzięki Bogu już piątek!

Dostęp do wartości można również uzyskać za pomocą jej indeksu. W takim przypadku wartość pod indeksem 2 w wyliczeniu dnia tygodnia (czyli we wtorek) zostanie zapisana w zmiennej:

Wtorek w dni powszednie = (Dzień powszedni)2;
Konsola. Wiersz zapisu("Dziś jest " + wtorek);
// Dane wyjściowe = Dzisiaj jest wtorek

Kiedy przekazujesz enum jako argument do Konsola. WriteLine(), toString() metoda wyliczania jest uruchamiana automatycznie. Oznacza to, że zamiast wypisywać prawdziwą wartość liczbową enum, czyli 5, wydrukuje wartość ciągu, Piątek.

Konsola. WriteLine (dzień powszedni. czwartek + " to jest nowe " + Dzień powszedni. Piątek);
// Dane wyjściowe = Czwartek to nowy piątek

Możesz również przekonwertować lub przeanalizować typ danych na liczbę całkowitą jako inny sposób przechowywania indeksu opcji:

int indeks poniedziałku = (int)Dzień powszedni. Poniedziałek;
Konsola. WriteLine (indeks poniedziałku);
// Wyjście = 1

Jak porównywać wyliczenia w C#

W języku C# można porównywać wyliczenia za pomocą operatorów porównania (==, !=, , <=, >=). Spowoduje to porównanie wartości liczbowej opcji.

Dzień tygodnia1 = Dzień tygodnia. Poniedziałek;
Dzień tygodnia2 = Dzień tygodnia. Wtorek;

Jeśli (dzień1 == dzień2)
{
Konsola. Wiersz zapisu(„Dni są takie same”.);
}
w przeciwnym razie
{
Konsola. Wiersz zapisu(„Dni są inne”.);
}

W tym przykładzie wartość Weekday. Poniedziałek to 1, a wartość Dzień tygodnia. Wtorek jest 2, więc 1 == 2 porównanie się nie powiedzie.

Innym sposobem porównywania wyliczeń jest tzw Równa się() metoda:

Jeśli (dzień1.Równa się (dzień2))
{
Konsola. Wiersz zapisu(„Dni są takie same”.);
}
w przeciwnym razie
{
Konsola. Wiersz zapisu(„Dni są inne”.);
}

Możesz również użyj instrukcji switch języka C# aby porównać wartość z każdą opcją w wyliczeniu. W tym przykładzie kod będzie dotyczył środowego przypadku:

Wartość dnia tygodnia do porównania = dzień tygodnia. Środa;

przełącznik (wartość do porównania)
{
sprawa Dzień powszedni. Poniedziałek:
Konsola. Wiersz zapisu("Potrzebuję kawy.");
przerwa;
sprawa Dzień powszedni. Wtorek:
Konsola. Wiersz zapisu("Potrzebuję kawy.");
przerwa;
sprawa Dzień powszedni. Środa:
Konsola. Wiersz zapisu("Potrzebuję kawy.");
przerwa;
sprawa Dzień powszedni. Czwartek:
Konsola. Wiersz zapisu(„Czwartek to nowy piątek!”);
przerwa;
sprawa Dzień powszedni. Piątek:
Konsola. Wiersz zapisu("Dzięki Bogu jest piątek!");
przerwa;
sprawa Dzień powszedni. Sobota:
Konsola. Wiersz zapisu("Mój ulubiony dzień!");
przerwa;
sprawa Dzień powszedni. Niedziela:
Konsola. Wiersz zapisu("Mój drugi ulubiony dzień!");
przerwa;
domyślny:
Konsola. Wiersz zapisu(„Nieprawidłowy dzień tygodnia”.);
przerwa;
}

Jak iterować po wyliczeniach w C#

Możesz iterować po wyliczeniach w języku C#, używając metody wylicz. GetValues() metoda, która zwraca tablicę wszystkich wartości w wyliczeniu. Ten fragment kodu drukuje każdy dzień tygodnia, w tym poniedziałek, wtorek itd.:

dla każdego (Dzień powszedni W wylicz. Pobierz wartości (typ(Dzień powszedni)))
{
Konsola. Wiersz zapisu((int)dzień); // Aby wydrukować indeks
Konsola. WriteLine (dzień); // Aby wydrukować wartość tekstową
}

Możesz także iterować po wartościach wyliczeniowych, używając metody wylicz. PobierzNazwy() metoda. Zwraca listę wartości łańcuchowych reprezentujących nazwy opcji wyliczeniowych:

dla każdego (strunowy nazwa W wylicz. PobierzNazwy(typ(Dzień powszedni)))
{
int indeks = (int)(Dzień tygodnia) Wyliczenie. Analizować(typ(Dzień tygodnia), imię);

Konsola. WriteLine (indeks); // Aby wydrukować indeks
Konsola. WriteLine (nazwa); // Aby wydrukować wartość tekstową
}

Używanie wyliczeń w C#

Możesz użyć wyliczeń w swoim kodzie, aby uczynić go bardziej czytelnym i mniej podatnym na błędy. Wyliczenia mogą być również bardzo przydatne w połączeniu z innymi strukturami, takimi jak słowniki.