Menu
Coddy logo textTech

Wzorce sprawdzania null

Część sekcji Logika i sterowanie przepływem ścieżki C# w Coddy. Lekcja 33 z 66.

Sprawdzanie wartości null jest niezbędnym elementem pisania niezawodnego kodu w C#. Istnieje kilka wzorców, których możesz użyć, aby bezpiecznie sprawdzać, czy wartości są null.

Przyjrzyjmy się kilku popularnym wzorcom sprawdzania wartości null:

Najpierw podstawowe sprawdzenie, czy wartość jest null:

string name = null;

if (name == null)
{
    Console.WriteLine("Name is null");
}

Innym często spotykanym wzorcem jest operator warunkowy względem wartości null (?.), który bezpiecznie uzyskuje dostęp do składowych obiektów, które mogą mieć wartość null:

string name = null;
int? length = name?.Length;  // length będzie mieć wartość null

Operator nullowego scalania (??) zapewnia wartość domyślną, gdy wyrażenie ma wartość null:

string name = null;
string displayName = name ?? "Unknown";  // displayName będzie mieć wartość "Unknown"

Możesz też łączyć te wzorce, aby obsługiwać bardziej złożone przypadki:

string name = null;
int length = (name ?? "").Length;  // length będzie wynosić 0

Metoda string.IsNullOrWhiteSpace() to wygodny sposób na sprawdzenie, czy ciąg znaków ma wartość null, jest pusty lub zawiera wyłącznie białe znaki — wszystko za pomocą jednego wywołania:

string name = null;

if (string.IsNullOrWhiteSpace(name))
{
    Console.WriteLine("Name is null, empty, or whitespace");
}

Jest to szczególnie przydatne, gdy chcesz traktować wartości null, puste ciągi znaków i ciągi zawierające wyłącznie białe znaki w ten sam sposób. Na przykład:

string name1 = null;
string name2 = "";
string name3 = "   ";

// Wszystkie trzy wypiszą komunikat
if (string.IsNullOrWhiteSpace(name1)) Console.WriteLine("name1 is null/empty/whitespace");
if (string.IsNullOrWhiteSpace(name2)) Console.WriteLine("name2 is null/empty/whitespace");
if (string.IsNullOrWhiteSpace(name3)) Console.WriteLine("name3 is null/empty/whitespace");

Zwróć uwagę, że string.IsNullOrWhiteSpace() różni się od zwykłego sprawdzenia wartości null. Wykrywa również puste ciągi oraz ciągi zawierające wyłącznie spacje, tabulatory lub inne białe znaki.

challenge icon

Wyzwanie

Łatwy

Utwórz metodę o nazwie processUserName, która przyjmuje parametr tekstowy userName. Metoda powinna:

  1. Jeśli userName ma wartość null, zwrócić "No user provided"
  2. Jeśli userName jest pusty lub zawiera wyłącznie białe znaki, zwrócić "Invalid username"
  3. W przeciwnym razie zwrócić "Welcome, [userName]!", gdzie [userName] to rzeczywista nazwa użytkownika

Pamiętaj, aby stosować odpowiednie wzorce sprawdzania wartości null.

Spróbuj swoich sił

using System;

class ProcessUserName
{
    public static string processUserName(string userName)
    {
        // Wpisz tutaj swój kod
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i sterowanie przepływem

Poćwicz samodzielnie: Kompilator C# online