Definiowanie i używanie typów wyliczeniowych
Twórz typy wyliczeniowe z wartościami jawnymi i niejawnymi.
Definiowanie i używanie typów wyliczeniowych to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 1 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.
Czym jest enum
enum to nazwany zestaw powiązanych stałych. Zwiększa czytelność kodu, zastępując magiczne liczby znaczącymi nazwami.
using System;
enum Direction { North, East, South, West }
class Program {
static void Main() {
Direction d = Direction.East;
Console.WriteLine(d);
}
}Deklarowanie enum
Enum deklaruje się za pomocą słowa kluczowego enum i listy jego składowych. Domyślnie pierwsza składowa ma wartość 0, następna 1 i tak dalej.
using System;
enum Day { Mon, Tue, Wed }
class Program {
static void Main() {
Console.WriteLine((int)Day.Mon);
Console.WriteLine((int)Day.Wed);
}
}Niestandardowe wartości bazowe
Można przypisać jawne wartości liczbowe. Składowe bez przypisanej wartości kontynuują numerację od poprzedniej wartości.
using System;
enum Status { Active = 1, Paused = 5, Stopped }
class Program {
static void Main() {
Console.WriteLine((int)Status.Stopped);
}
}Wybór typu bazowego
Enumy domyślnie używają typu int, ale można wybrać inny typ całkowity, na przykład byte, aby zaoszczędzić miejsce.
using System;
enum Level : byte { Low = 1, High = 200 }
class Program {
static void Main() {
Console.WriteLine((byte)Level.High);
}
}Enumy w zmiennych
Typu enum można używać, tak jak każdego innego typu, dla zmiennych, parametrów i pól.
using System;
enum Color { Red, Green, Blue }
class Program {
static void Describe(Color c) {
Console.WriteLine("Color is " + c);
}
static void Main() {
Describe(Color.Green);
}
}Enumy w switch
Enumy świetnie współpracują z switch, umożliwiając czytelne i wyczerpujące rozgałęzienia.
using System;
enum Signal { Stop, Go, Caution }
class Program {
static void Main() {
Signal s = Signal.Go;
switch (s) {
case Signal.Stop: Console.WriteLine("Halt"); break;
case Signal.Go: Console.WriteLine("Move"); break;
default: Console.WriteLine("Slow"); break;
}
}
}Porównywanie wartości enum
Wartości enum można porównywać za pomocą == i operatorów porównania, zgodnie z ich liczbami bazowymi.
using System;
enum Priority { Low, Medium, High }
class Program {
static void Main() {
Console.WriteLine(Priority.High > Priority.Low);
}
}Domyślna wartość enum
Niezainicjowany enum jest równy składowej o wartości 0. Dobrą praktyką jest przypisanie wartości 0 sensownej wartości domyślnej, takiej jak None.
using System;
enum Mode { None, Fast, Slow }
class Program {
static void Main() {
Mode m = default;
Console.WriteLine(m);
}
}Wyświetlanie nazw enum
Wywołanie ToString lub wyświetlenie enuma pokazuje nazwę składowej, co jest znacznie czytelniejsze niż sama liczba.
using System;
enum Fruit { Apple, Banana, Cherry }
class Program {
static void Main() {
Console.WriteLine(Fruit.Banana.ToString());
}
}Enumy zwiększają czytelność
W porównaniu z przekazywaniem zwykłych liczb całkowitych enumy dokumentują intencję i zapobiegają użyciu nieprawidłowych wartości.
using System;
enum Size { Small, Medium, Large }
class Program {
static int PriceFor(Size s) {
return s == Size.Large ? 12 : 8;
}
static void Main() {
Console.WriteLine(PriceFor(Size.Large));
}
}Gdzie deklarować enumy
Enumy można umieszczać na poziomie przestrzeni nazw lub wewnątrz klasy. Należy trzymać je w pobliżu kodu, który z nich korzysta.
using System;
class Program {
enum Phase { Start, Run, End }
static void Main() {
Console.WriteLine(Phase.Run);
}
}Szybki test
Proszę sprawdzić swoją wiedzę na temat enumów.
Podsumowanie
Typ enum definiuje zestaw nazwanych stałych, zwiększając czytelność w porównaniu z magicznymi liczbami. Składowe domyślnie mają wartości 0, 1, 2... Można jednak przypisać im jawne wartości, a nawet zmienić bazowy typ całkowity.
Enumy dobrze sprawdzają się w zmiennych, instrukcjach switch i porównaniach, wyświetlają nazwy swoich składowych i domyślnie przyjmują składową o wartości 0.
Często zadawane pytania
Czy lekcja „Definiowanie i używanie typów wyliczeniowych” jest bezpłatna?
Tak — pełny tekst „Definiowanie i używanie typów wyliczeniowych” 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 „Definiowanie i używanie typów wyliczeniowych”?
Twórz typy wyliczeniowe z wartościami jawnymi i niejawnymi. Ć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 1 z 4.
Ile czasu zajmuje lekcja „Definiowanie i używanie typów wyliczeniowych”?
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