Exemple #1
0
        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);
        }
Exemple #2
0
        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
        }