enum TestIQ : byte { niski = 80, sredni = 100, wysoki = 130, /*geniusz = 280 */ } // 280 wykracza poza zakres wartości byte. public static void StosowanieWyliczeniowychTypowDanych() { /* Przypisanie wartości * Do zmiennych wyliczeniowych można przypisać tylko wartości zdefiniowane w swoim typie wyliczeniowym, np. */ PoraRoku bialaPoraroku = PoraRoku.Zima; /* Odczytywanie wartości * Przed odczytaniem konieczne jest przypisanie jej pewnej wartości. * Każda zmienna typu wartościowego posiada metodę ToString(). */ Console.WriteLine(bialaPoraroku); // Wynik: Zima (Console.WriteLine automatycznie użyje metodę ToString()) string goraca = PoraRoku.Lato.ToString(); /* Należy zwrócic uwagę na użycie zapisu 'PoraRoku.Zima' zamiast poprostu 'Zima'. * Nazwy 'literałów' wyliczeniowych mają zakres zdefinowany przez typ wyliczniowy w którym są zdefinowane. W nawiasach klamrowych { } */ /* Uwaga! * Zmienne wyliczeniowe możemy używać jak pozostałe zmienne. Tworzyć zmienne typu PoraRoku, pola klas oraz parametry metody typu PoraRoku */ PoraRoku poraRoku; PoraRoku ZmienPoreRoku(PoraRoku poraRoku1) { return(PoraRoku.Wiosna); } TestIQ wynik = TestIQ.wysoki; switch (wynik) { case TestIQ.niski: Console.Write("uposledzony"); break; case TestIQ.sredni: Console.Write("normalny"); break; case TestIQ.wysoki: Console.Write($"{TestIQ.wysoki} IQ na poziomie: {(byte)TestIQ.wysoki}"); break; } /* Nullowalny typ wyliczeniowy! * Ponieważ typ wyliczeniowy jest typem wartościowym, możliwe jest utworzenie z niej zmiennej nulowalnej. */ PoraRoku?kolorowa = null; if (!kolorowa.HasValue) { kolorowa = PoraRoku.Jesien; } Console.WriteLine(kolorowa.Value); }
public static void OperacjeArytmetyczneNaEnumach() { PoraRoku poraRoku = PoraRoku.Jesien; poraRoku++; Console.WriteLine(poraRoku); --poraRoku; poraRoku += 2; poraRoku += 100; Console.WriteLine(poraRoku); // wynik 100. zostanie wyswielona liczba, gdyż nie ma takiej pory roku bool isSummer = poraRoku == PoraRoku.Lato; if (isSummer) { Console.WriteLine("Ide na plaże"); } // season += Seasons.Spring; // BAD // season += (int)Seasons.Spring; // GOOD }