0Pricing
C# Academy · Lekcja

Iterowanie po wartościach typu wyliczeniowego

Wyliczaj wszystkich członków za pomocą Enum.GetValues.

Iterowanie po wartościach typu wyliczeniowego to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 4 lekcji w sumie.

Wyświetlanie składowych enum

Czasami potrzebne są wszystkie wartości enuma, na przykład do utworzenia menu. Udostępnia je Enum.GetValues.

using System;

enum Day { Mon, Tue, Wed }
class Program {
    static void Main() {
        foreach (Day d in Enum.GetValues<Day>())
            Console.WriteLine(d);
    }
}

Generyczne GetValues

Generyczna metoda Enum.GetValues<T>() zwraca silnie typowaną tablicę, po której można bezpośrednio iterować.

using System;

enum Color { Red, Green, Blue }
class Program {
    static void Main() {
        Color[] all = Enum.GetValues<Color>();
        Console.WriteLine(all.Length);
    }
}

Pobieranie nazw elementów

Enum.GetNames<T>() zwraca nazwy elementów jako ciągi znaków.

using System;

enum Color { Red, Green, Blue }
class Program {
    static void Main() {
        foreach (string name in Enum.GetNames<Color>())
            Console.WriteLine(name);
    }
}

Nazwy i wartości razem

Proszę iterować po wartościach i rzutować je na int, aby wyświetlić zarówno nazwę, jak i odpowiadającą jej liczbę.

using System;

enum Color { Red = 1, Green = 2, Blue = 4 }
class Program {
    static void Main() {
        foreach (Color c in Enum.GetValues<Color>())
            Console.WriteLine(c + " = " + (int)c);
    }
}

Zliczanie elementów

Długość tablicy wartości informuje, ile elementów ma typ wyliczeniowy.

using System;

enum Suit { Hearts, Diamonds, Clubs, Spades }
class Program {
    static void Main() {
        int count = Enum.GetValues<Suit>().Length;
        Console.WriteLine(count);
    }
}

Tworzenie menu

Iterowanie po wartościach doskonale nadaje się do wyświetlania numerowanej listy wyboru.

using System;

enum Option { Start, Settings, Quit }
class Program {
    static void Main() {
        int i = 1;
        foreach (Option o in Enum.GetValues<Option>())
            Console.WriteLine(i++ + ") " + o);
    }
}

Filtrowanie podczas iteracji

Podczas iteracji można pomijać określone elementy, takie jak element-sentinel None.

using System;

enum State { None, Active, Closed }
class Program {
    static void Main() {
        foreach (State s in Enum.GetValues<State>())
            if (s != State.None)
                Console.WriteLine(s);
    }
}

Iterowanie za pomocą LINQ

Proszę połączyć Enum.GetValues z LINQ, aby filtrować lub przekształcać wartości.

using System;
using System.Linq;

enum Level { Low = 1, Medium = 2, High = 3 }
class Program {
    static void Main() {
        var highOnes = Enum.GetValues<Level>().Where(l => (int)l >= 2);
        foreach (var l in highOnes) Console.WriteLine(l);
    }
}

Starsza forma niegeneryczna

Przed wprowadzeniem typów generycznych używano Enum.GetValues(typeof(T)), które zwraca nieotypowaną tablicę.

using System;

enum Color { Red, Green, Blue }
class Program {
    static void Main() {
        foreach (Color c in Enum.GetValues(typeof(Color)))
            Console.WriteLine(c);
    }
}

Flagi i iteracja

W przypadku typów wyliczeniowych z flagami iteracja wyświetla każdą pojedynczą flagę; pojawiają się także wygodne elementy złożone, więc w razie potrzeby należy je odfiltrować.

using System;

[Flags]
enum Perm { Read = 1, Write = 2, Execute = 4 }
class Program {
    static void Main() {
        foreach (Perm p in Enum.GetValues<Perm>())
            Console.WriteLine(p + " = " + (int)p);
    }
}

Dlaczego warto iterować po typach wyliczeniowych

Iterowanie utrzymuje interfejs użytkownika i walidację w zgodzie z typem wyliczeniowym: po dodaniu elementu pętle automatycznie go uwzględnią.

using System;

enum Size { Small, Medium, Large }
class Program {
    static void Main() {
        foreach (Size s in Enum.GetValues<Size>())
            Console.WriteLine("Available: " + s);
    }
}

Szybkie sprawdzenie

Proszę sprawdzić zrozumienie iterowania po typach wyliczeniowych.

Podsumowanie

Enum.GetValues<T>() zwraca każdy element w postaci typowanej tablicy, a Enum.GetNames<T>() zwraca ich nazwy. Można iterować po elementach, aby wyświetlać nazwy wraz z wartościami liczbowymi, zliczać elementy, tworzyć menu lub filtrować je za pomocą LINQ.

Iterowanie automatycznie synchronizuje menu i walidację z rozwojem typu wyliczeniowego.

Często zadawane pytania

Czy lekcja „Iterowanie po wartościach typu wyliczeniowego” jest bezpłatna?

Tak — pełny tekst „Iterowanie po wartościach typu wyliczeniowego” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Iterowanie po wartościach typu wyliczeniowego”?

Wyliczaj wszystkich członków za pomocą Enum.GetValues. Ćwiczysz C# Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C# Academy?

Nie wymagamy żadnego doświadczenia. C# Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Iterowanie po wartościach typu wyliczeniowego”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C# Academy?

Tak. Każda lekcja C# Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Definiowanie i używanie typów wyliczeniowych
  2. Typy wyliczeniowe Flags i kombinacje bitowe
  3. Konwersja i parsowanie typów wyliczeniowych
  4. Iterowanie po wartościach typu wyliczeniowego
← Powrót do C# Academy