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
- Definiowanie i używanie typów wyliczeniowych
- Typy wyliczeniowe Flags i kombinacje bitowe
- Konwersja i parsowanie typów wyliczeniowych
- Iterowanie po wartościach typu wyliczeniowego