C# switch expression – co to jest i jak używać?
Wielu programistów zna dobrze klasyczną instrukcję `switch` w języku C#. Jest to świetne narzędzie do podejmowania decyzji w kodzie na podstawie wartości zmiennej. Jednak w C# 8.0 Microsoft wprowadził coś nowego, co zmienia sposób, w jaki możemy wykorzystywać `switch`. Mowa tu o c# switch expression, czyli wyrażeniu `switch`. To nowoczesna i bardziej funkcjonalna alternatywa dla tradycyjnej instrukcji `switch`, która ułatwia pisanie bardziej eleganckiego i zwięzłego kodu.
1. Czym jest C# Switch Expression?
Switch expression to nowa funkcjonalność, która pojawiła się w C# 8.0 i stanowi alternatywę dla klasycznej instrukcji `switch`. Zamiast pisać długie bloki kodu z wieloma `case` i `break`, switch expression pozwala na bardziej zwięzły zapis, który zwraca wartość na podstawie warunków w postaci wyrażenia. Co to oznacza w praktyce? Zamiast pisać kod w tradycyjnej formie, możemy teraz używać wyrażeń, które zwracają wartość, co pozwala na krótsze i czytelniejsze rozwiązania.
W przeciwieństwie do standardowego `switch`, który nie zwraca bezpośrednio żadnej wartości, `switch expression` jest używane w sytuacjach, w których chcemy zwrócić wynik w zależności od warunku, na przykład przypisanie wartości do zmiennej. Warto dodać, że switch expression pozwala na stosowanie operatorów i bardziej złożonych wyrażeń, co sprawia, że kod jest bardziej elastyczny i mocniejszy.
2. Składnia C# Switch Expression
Składnia C# switch expression jest bardzo prosta, a dzięki swojej zwięzłości, pozwala na łatwiejsze i bardziej zrozumiałe tworzenie warunków. Wyrażenie switch składa się z kilku części:
var wynik = zmienna switch
{
przypadek1 => wynik1,
przypadek2 => wynik2,
_ => domyślnyWynik
};
W powyższym przykładzie mamy zmienną, która na podstawie swojej wartości zostaje przypisana do jednej z możliwych opcji (np. `przypadek1`, `przypadek2`), a domyślny przypadek (_), który zadziała, jeśli żaden z wcześniejszych przypadków nie zostanie spełniony.
Warto zauważyć, że w C# switch expression każda z opcji (np. `przypadek1 => wynik1`) jest traktowana jako wyrażenie, co oznacza, że po jej użyciu od razu zwracamy wartość.
3. Przykłady C# Switch Expression
Aby lepiej zrozumieć, jak działa switch expression, przeanalizujmy kilka przykładów.
3.1. Prosty przykład – przypisanie wartości na podstawie zmiennej
Załóżmy, że mamy zmienną `day` reprezentującą dzień tygodnia i chcemy przypisać jej nazwę dnia w tygodniu za pomocą switch expression:
string day = "Monday";
string result = day switch
{
"Monday" => "Poniedziałek",
"Tuesday" => "Wtorek",
"Wednesday" => "Środa",
"Thursday" => "Czwartek",
"Friday" => "Piątek",
"Saturday" => "Sobota",
"Sunday" => "Niedziela",
_ => "Niepoprawny dzień"
};
Console.WriteLine(result); // Output: Poniedziałek
W powyższym przykładzie, zmienna `day` przechowuje wartość "Monday". Na podstawie tej zmiennej, za pomocą switch expression, przypisujemy odpowiednią nazwę dnia tygodnia. Gdy wartość nie pasuje do żadnej z opcji, domyślnie przypisujemy tekst "Niepoprawny dzień".
3.2. Przykład z wykorzystaniem liczby
Kolejny przykład, tym razem z użyciem liczb. Załóżmy, że mamy liczbę i chcemy zwrócić odpowiedni komunikat:
int number = 4;
string message = number switch
{
1 => "Jeden",
2 => "Dwa",
3 => "Trzy",
4 => "Cztery",
5 => "Pięć",
_ => "Nieznana liczba"
};
Console.WriteLine(message); // Output: Cztery
W tym przypadku liczba `4` zostaje przekazana do switch expression, który przypisuje odpowiednią nazwę liczby. W przypadku, gdyby liczba nie pasowała do żadnego przypadku, wynik byłby "Nieznana liczba".
3.3. Przykład z użyciem różnych typów danych
W C# switch expression możesz również używać różnych typów danych, nie ograniczając się tylko do prostych typów jak `string` czy `int`. Przykład z użyciem różnych typów:
object value = 42;
string result = value switch
{
int i => "To jest liczba całkowita: " + i,
string s => "To jest tekst: " + s,
bool b => "To jest wartość logiczna: " + b,
_ => "Nieznany typ"
};
Console.WriteLine(result); // Output: To jest liczba całkowita: 42
W tym przypadku zmienna `value` przechowuje wartość `42`, która jest typu `int`. Switch expression sprawdza typ tej zmiennej i na podstawie typu przypisuje odpowiednią wiadomość. Możemy mieć do czynienia z różnymi typami danych w jednym wyrażeniu!
4. Zaawansowane funkcje C# Switch Expression
Switch expression w C# 8.0 to znacznie więcej niż tylko proste przypisanie wartości. Możemy tworzyć bardziej zaawansowane i elastyczne rozwiązania. Oto kilka dodatkowych funkcji, które warto znać:
- Przypadki oparte na warunkach: Możesz używać warunków w `switch expression`, dzięki czemu masz większą kontrolę nad tym, co się dzieje, gdy warunek jest spełniony. Na przykład:
int number = 15;
string result = number switch
{
var n when n < 10 => "Mniejsza niż 10",
var n when n >= 10 && n <= 20 => "Między 10 a 20",
_ => "Większa niż 20"
};
Console.WriteLine(result); // Output: Między 10 a 20
W tym przypadku używamy `when`, aby dodać dodatkowy warunek, który umożliwia jeszcze bardziej precyzyjne kontrolowanie tego, co się dzieje w danym przypadku.
5. Korzyści z używania C# Switch Expression
C# switch expression niesie ze sobą wiele korzyści, które sprawiają, że kod staje się bardziej elegancki, prostszy do utrzymania, a także bardziej wydajny. Oto niektóre z najważniejszych zalet:
- Zwięzłość kodu: Dzięki krótkiej składni switch expression, twój kod staje się bardziej zwięzły i przejrzysty, co jest istotne w długoterminowym utrzymaniu projektu.
- Większa elastyczność: Switch expression pozwala na większą elastyczność w definiowaniu przypadków, używając warunków i operatorów.
- Łatwiejsza analiza: Ponieważ każdy przypadek jest traktowany jako wyrażenie, łatwiej jest analizować i rozumieć logikę, szczególnie gdy mamy do czynienia z bardziej złożonymi przypadkami.
6. Podsumowanie
C# switch expression to doskonałe narzędzie, które może ułatwić i skrócić kod w wielu sytuacjach. Pozwala na bardziej elegancki zapis warunków, oferując przy tym możliwość używania zaawansowanych technik, jak warunki czy różne typy danych. Jeśli chcesz, aby twój kod w C# był bardziej zwięzły, funkcjonalny i łatwiejszy do utrzymania, warto zacząć korzystać z tego wyrażenia. C# switch expression to krok w stronę nowoczesnych rozwiązań programistycznych!

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!