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.
Wyzwanie
ŁatwyUtwórz metodę o nazwie processUserName, która przyjmuje parametr tekstowy userName. Metoda powinna:
- Jeśli
userNamema wartość null, zwrócić "No user provided" - Jeśli
userNamejest pusty lub zawiera wyłącznie białe znaki, zwrócić "Invalid username" - 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
}
}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
1Tablice wielowymiarowe
Podstawy tablic 2DDeklarowanie i inicjalizacja tablic 2DDostęp do elementów tablic 2DZagnieżdżone pętle z tablicami 2DTablice postrzępionePodstawowe operacje na macierzachPodsumowanie — tablice wielowymiarowe4Techniki sterowania przepływem
Wczesne zwrotyKlauzule ochronneInstrukcje skoku (goto)Break i continueSpłaszczanie zagnieżdżonych warunków7Zaawansowane operatory logiczne
Ewaluacja z krótkim spięciemWarunkowe operatory logicznePriorytet operatorówPowtórzenie — zaawansowane operatory2Zaawansowane podejmowanie decyzji
Wiele warunkówZłożona logika Boole’aPorównanie if i switchZagnieżdżone instrukcje switchPodsumowanie — zaawansowane decyzje5Obsługa wyjątków
Podstawy try-catchTypy wyjątkówWiele bloków catchPraca z plikamiBlok finallyusing a try-finallyWłasne wyjątkiPowtórzenie — obsługa błędów3Udoskonalenia pętli
Wydajność pętliIterowanie po złożonych strukturachKażdy typ pętliRefaktoryzacja pętliPodsumowanie — zoptymalizowane pętle6Obsługa wartości null
Podstawy referencji nullTypy wartości dopuszczające nullWzorce sprawdzania nullProgramowanie defensywnePodsumowanie — bezpieczeństwo nullPoćwicz samodzielnie: Kompilator C# online