Konwersja i parsowanie typów wyliczeniowych
Konwertuj typy wyliczeniowe, liczby całkowite i ciągi znaków między sobą.
Konwersja i parsowanie typów wyliczeniowych to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 3 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.
Enum na liczbę całkowitą
Enum można rzutować na jego typ bazowy za pomocą (int), aby uzyskać wartość liczbową.
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
int n = (int)Level.High;
Console.WriteLine(n);
}
}Liczba całkowita na enum
Liczbę można zrzutować z powrotem na typ enum. Wartość nie musi odpowiadać zdefiniowanej składowej, dlatego w razie potrzeby należy ją sprawdzić.
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
Level l = (Level)2;
Console.WriteLine(l);
}
}Sprawdzanie za pomocą IsDefined
Enum.IsDefined potwierdza, że liczba lub nazwa odpowiada rzeczywistej składowej, zanim zostanie użyta.
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
Console.WriteLine(Enum.IsDefined(typeof(Level), 1));
Console.WriteLine(Enum.IsDefined(typeof(Level), 9));
}
}Enum na ciąg znaków
ToString zwraca nazwę składowej, co jest przydatne podczas wyświetlania i rejestrowania informacji.
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
Console.WriteLine(Level.Medium.ToString());
}
}Parsowanie z ciągu znaków
Enum.Parse przekształca nazwę z powrotem w wartość enum, ale zgłasza wyjątek, jeśli nazwa jest nieprawidłowa.
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
Level l = (Level)Enum.Parse(typeof(Level), "High");
Console.WriteLine(l);
}
}Parsowanie generyczne
Forma generyczna Enum.Parse<T> pozwala uniknąć rzutowania i zapewnia czytelny kod.
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
Level l = Enum.Parse<Level>("Medium");
Console.WriteLine(l);
}
}Bezpieczne parsowanie za pomocą TryParse
Enum.TryParse zwraca wartość bool informującą o powodzeniu zamiast zgłaszać wyjątek, dzięki czemu jest bezpieczniejsza w przypadku danych wprowadzanych przez użytkownika.
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
if (Enum.TryParse<Level>("Low", out var result))
Console.WriteLine("Parsed: " + result);
}
}Obsługa nieprawidłowych danych
Gdy parsowanie się nie powiedzie, TryParse zwraca wartość false, dzięki czemu można zareagować w kontrolowany sposób.
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
bool ok = Enum.TryParse<Level>("Unknown", out var result);
Console.WriteLine(ok ? result.ToString() : "Invalid input");
}
}Parsowanie bez uwzględniania wielkości liter
Proszę przekazać wartość true, aby podczas parsowania ignorować wielkość liter.
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
Level l = Enum.Parse<Level>("high", true);
Console.WriteLine(l);
}
}TryParse lepsze niż IsDefined w przypadku nazw
Podczas parsowania nazw TryParse sprawdza poprawność i wykonuje konwersję w jednym wywołaniu.
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
string input = "Medium";
if (Enum.TryParse<Level>(input, out var lvl) && Enum.IsDefined(typeof(Level), lvl))
Console.WriteLine("Valid: " + lvl);
}
}Konwersje w obie strony
Można konwertować enum na int i z powrotem albo na ciąg znaków i z powrotem, o ile wartości są prawidłowe.
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
Level start = Level.High;
int num = (int)start;
Level back = (Level)num;
Console.WriteLine(start == back);
}
}Szybki test
Proszę sprawdzić swoją wiedzę na temat konwersji i parsowania enumów.
Podsumowanie
Enum można rzutować na jego bazową liczbę całkowitą i odwrotnie za pomocą (int) oraz (EnumType), a do sprawdzania poprawności służy Enum.IsDefined. ToString zwraca nazwę składowej.
Nazwy można z powrotem przekształcać za pomocą Enum.Parse<T> (zgłasza wyjątek) lub bezpieczniejszej metody Enum.TryParse<T> (zwraca wartość bool), opcjonalnie bez uwzględniania wielkości liter.
Często zadawane pytania
Czy lekcja „Konwersja i parsowanie typów wyliczeniowych” jest bezpłatna?
Tak — pełny tekst „Konwersja i parsowanie 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 „Konwersja i parsowanie typów wyliczeniowych”?
Konwertuj typy wyliczeniowe, liczby całkowite i ciągi znaków między sobą. Ć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 3 z 4.
Ile czasu zajmuje lekcja „Konwersja i parsowanie 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