Typy wyliczeniowe
Typy wyliczeniowe (zwane również "enumami") w języku C# są sposobem na zdefiniowanie zestawu nazwanych wartości. Są one przydatne w sytuacjach, gdy zmienna może mieć tylko jedną z predefiniowanego zestawu wartości. Typy wyliczeniowe są definiowane przy użyciu słowa kluczowego enum, a wartości wewnątrz typu wyliczeniowego są określane jako lista nazw oddzielonych przecinkami.

Typy takie w języku C# deklarowane są za pomocą słowa kluczowego enum
enum Dni { Poniedziałek, Wtorek, Środa, Czwartek, Piątek, Sobota, Niedziela };
Domyślnie typ podstawowy typu wyliczeniowego jest int, ale może być zmieniony na dowolny typ całkowity, taki jak byte, sbyte, short, ushort, int, uint, long lub ulong.
enum Dni : byte { Poniedziałek, Wtorek, Środa, Czwartek, Piątek, Sobota, Niedziela };
Oto przykład użycia typów wyliczeniowych do reprezentowania kolorów:
enum Kolory { Czerwony, Zielony, Niebieski };
Kolory mójKolor = Kolory.Zielony;
if (mójKolor == Kolory.Czerwony)
{
Console.WriteLine("Kolor jest czerwony.");
}
else if (mójKolor == Kolory.Zielony)
{
Console.WriteLine("Kolor jest zielony.");
}
else if (mójKolor == Kolory.Niebieski)
{
Console.WriteLine("Kolor jest niebieski.");
}
Kolor jest zielony
Można również przypisać wartości liczbowe do nazw wartości typu wyliczeniowego:
enum PoryRoku { Zima = 1, Wiosna = 2, Lato = 3, Jesień = 4 };
PoryRoku obecnaPoraRoku = PoryRoku.Wiosna;
Console.WriteLine("Obecna pora roku to: " + obecnaPoraRoku);
Obecna pora roku to: Wiosna
Możemy również używać typów wyliczeniowych jako argumentów funkcji:
void MalujPokój(Kolory kolor)
{
switch (kolor)
{
case Kolory.Czerwony: // Sprawdzenie, czy wartość zmiennej kolor jest Kolory.Czerwony
Console.WriteLine("Malowanie pokoju na czerwono..."); // Wyświetlenie komunikatu "Malowanie pokoju na czerwono..."
break; // Zakończenie przypadku
case Kolory.Zielony: // Sprawdzenie, czy wartość zmiennej kolor jest Kolory.Zielony
Console.WriteLine("Malowanie pokoju na zielono..."); // Wyświetlenie komunikatu "Malowanie pokoju na zielono..."
break; // Zakończenie przypadku
case Kolory.Niebieski: // Sprawdzenie, czy wartość zmiennej kolor jest Kolory.Niebieski
Console.WriteLine("Malowanie pokoju na niebiesko..."); // Wyświetlenie komunikatu "Malowanie pokoju na niebiesko..."
break; // Zakończenie przypadku
}
}
MalujPokój(Kolory.Niebieski); // Wywołanie funkcji MalujPokój z argumentem Kolory.Niebieski
// Funkcja MalujPokój przyjmuje parametr kolor typu Kolory.
// Wewnątrz funkcji używamy instrukcji switch, aby sprawdzić wartość przekazaną do parametru kolor.
// W zależności od wartości, wykonujemy odpowiednie działania.
// W wyniku powyższego kodu, zostanie wyświetlony komunikat "Malowanie pokoju na niebiesko...".
Malowanie pokoju na niebiesko

typy wyliczeniowe są przydatne do reprezentowania zestawów wartości, które mogą być przypisane do zmiennych, oraz ułatwiają kodowanie instrukcji warunkowych i funkcji.