MC, 2025
Ilustracja do artykułu: C# Question Mark Operator – jak go wykorzystać? Przykłady w praktyce

C# Question Mark Operator – jak go wykorzystać? Przykłady w praktyce

Operator question mark w C# jest jednym z bardziej przydatnych i zarazem ciekawych elementów tego języka. Jest to konstrukcja, która pozwala na uproszczenie kodu oraz unikanie długich warunków, co czyni kod bardziej czytelnym. W tym artykule szczegółowo omówimy, czym jest operator question mark, jakie ma zastosowanie i jak z niego korzystać w praktyce. Zobaczymy również konkretne przykłady, które pomogą zrozumieć jego działanie.

1. Czym jest operator question mark w C#?

W C# operator question mark to część tzw. operatora warunkowego, znanego również jako ternary operator. Jest to sposób na zapisanie prostych instrukcji warunkowych w jednym wierszu kodu. Składa się on z trzech części: warunku, wartości, która zostanie przypisana w przypadku spełnienia warunku oraz wartości przypisanej, gdy warunek nie zostanie spełniony.

Składnia operatora question mark wygląda następująco:

warunek ? wartośćJeśliPrawda : wartośćJeśliFałsz;

Gdzie:

  • warunek – wyrażenie, które jest oceniane (np. zmienna porównana z jakąś wartością),
  • wartośćJeśliPrawda – wartość, która zostanie przypisana, jeśli warunek będzie prawdziwy,
  • wartośćJeśliFałsz – wartość przypisana, gdy warunek jest fałszywy.

Operator ten jest skrótem dla instrukcji if-else, jednak w postaci bardziej zwartych i zwięzłych zapisów. Poniżej zobaczymy przykłady, które pomogą w pełni zrozumieć jego działanie.

2. Podstawowy przykład użycia operatora question mark w C#

Załóżmy, że chcemy sprawdzić, czy liczba jest większa niż 10, a w zależności od wyniku tej operacji przypisać odpowiednią wartość. Zamiast używać klasycznego if-else, możemy skorzystać z operatora question mark:

int liczba = 15;
string wynik = liczba > 10 ? "Liczba jest większa niż 10" : "Liczba jest mniejsza lub równa 10";
Console.WriteLine(wynik);

W tym przykładzie, jeżeli wartość zmiennej liczba jest większa niż 10, do zmiennej wynik przypisana zostanie wartość "Liczba jest większa niż 10", w przeciwnym razie – "Liczba jest mniejsza lub równa 10".

3. Operator question mark a nullability w C#

Operator question mark ma również zastosowanie w kontekście zmiennych typu nullable. C# wprowadza możliwość posiadania zmiennych, które mogą przechowywać wartość null, a operator ? pozwala na szybkie sprawdzenie, czy zmienna nie jest nullem, bez konieczności stosowania długich bloków warunkowych. W tym przypadku stosujemy ?. w celu sprawdzenia, czy obiekt jest nullem.

Przykład zastosowania operatora dla zmiennych nullable:

int? liczbaNullable = null;
int wynik = liczbaNullable ?? 0;  // Zmienna przyjmuje 0, jeśli liczbaNullable jest null
Console.WriteLine(wynik);

W powyższym przykładzie, operator ?? jest używany do przypisania wartości domyślnej (0), gdy liczbaNullable ma wartość null. Jest to bardzo użyteczne, gdy nie chcemy, aby zmienne typu nullable generowały błędy podczas operacji.

4. Operator question mark w połączeniu z kolekcjami

Operator ?. znajduje również zastosowanie w pracy z kolekcjami i obiektami, które mogą być nullem. Dzięki niemu możemy uniknąć wyjątku NullReferenceException, który może wystąpić, gdy próbujemy uzyskać dostęp do właściwości lub metod obiektu, który jest nullem. Operator ?. pozwala na bezpieczne odwołanie się do właściwości lub metod obiektu, jeśli ten nie jest nullem.

Oto przykład, w którym próbujemy pobrać długość listy, która może być nullem:

List lista = null;
int? dlugosc = lista?.Count;
Console.WriteLine(dlugosc);  // null, ponieważ lista jest nullem

Jeżeli lista nie byłaby nullem, operator ?. zwróciłby liczbę elementów w tej liście. Jeśli jednak lista jest nullem, wynik będzie również nullem, co pozwala uniknąć błędu.

5. Operator question mark a opcjonalne parametry w metodach

W C# operator ? może także występować w kontekście deklaracji metod, które przyjmują opcjonalne parametry. Możemy ustawić parametr jako nullable, aby w razie potrzeby przekazać do metody wartość null. Jest to szczególnie przydatne, gdy chcemy, aby pewne dane były opcjonalne.

Przykład:

public void PowitajUzytkownika(string imie, string? nazwisko = null)
{
    if (nazwisko == null)
        Console.WriteLine($"Witaj, {imie}!");
    else
        Console.WriteLine($"Witaj, {imie} {nazwisko}!");
}

W tym przypadku parametr nazwisko jest opcjonalny i może przyjąć wartość null. Jeżeli nie podamy nazwiska, metoda wypisze tylko imię.

6. Zastosowanie operatora w operacjach logicznych

Operator question mark może być również stosowany w bardziej złożonych operacjach logicznych, kiedy mamy do czynienia z bardziej złożonymi warunkami. Dzięki temu możemy uzyskać bardzo zwięzły i czytelny kod. Poniżej przykład użycia operatora w bardziej zaawansowanej operacji:

int a = 5;
int b = 10;
string wynik = a > b ? (a % 2 == 0 ? "A jest parzyste" : "A jest nieparzyste") : "B jest większe";
Console.WriteLine(wynik);

W tym przykładzie, najpierw sprawdzamy, czy a jest większe od b. Jeśli tak, to następnie sprawdzamy, czy a jest liczbą parzystą, a wynik tej operacji zależy od obu warunków.

7. Podsumowanie

Operator question mark w C# to jeden z tych elementów języka, które znacznie upraszczają nasz kod i czynią go bardziej czytelnym. Dzięki niemu możemy uniknąć rozbudowanych bloków if-else, a także bezpiecznie operować na zmiennych nullable oraz obiektach. Operator ten przydaje się w wielu różnych sytuacjach – od prostych warunków, po skomplikowane operacje na kolekcjach. Jak widać, zastosowanie operatora jest bardzo szerokie i warto nauczyć się go wykorzystywać w codziennej pracy z C#.

Jeśli jeszcze nie używałeś operatora ? w swoim kodzie, teraz jest najlepszy moment, aby to zrobić i zaobserwować, jak wiele ułatwień może przynieść ten prosty, ale potężny operator!

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

Imię:
Treść: