Przejdź do treści stopki
Iron Academy Logo
Naucz się C#
Naucz się C#

Inne Kategorie

Zrozumienie operatora koalescencji Null w C#

Gerald Versluis
12m 43s

Null coalescing operator (??) w C# pozwala deweloperom na uproszczenie logiki sprawdzania null, zmniejszenie zawiłości kodu i poprawę czytelności. Zamiast pisania długich warunków if-else, ten operator zapewnia zwięzły sposób przypisywania wartości domyślnych w przypadku napotkania null. W tym artykułe przyjrzymy się szczegółowo operatorowi null coalescing, śledząc wideo Geralda Versluisa, "Understanding C# Null Coalescing Operator (?? and ??=)"](https://www.youtube.com/watch?v=aIp0jUr6A24&list=PLfbOp004UaYWWOZFZ585BCeRvTduLt9Fm&index=11). Rozbierzemy kluczowe sekcje wideo i przeanalizujemy, jak Gerald demonstruje tę przydatną cechę C#.

Wprowadzenie

Na początku wideo, Gerald przedstawia operator null coalescing jako potężną funkcję w C#, która znacznie zmniejsza liczbę linii kodu potrzebnych do sprawdzania null. Podkreśla, że ten operator upraszcza warunki i sprawia, że kod staje się bardziej czytelny. Aby zilustrować jego zalety, Gerald przechodzi przez przykładową aplikację, w której implementuje i wyjaśnia różne przypadki użycia operatora null coalescing.

Zarys Przykładowej Aplikacji

Gerald zaczyna od skonfigurowania prostej aplikacji konsolowej. Wspomina, że w poprzednich wideo używał strony try.dot.net do demonstracji, ale z powodu ograniczeń wersji (obsługującej jedynie C# 7) przechodzi do Visual Studio dla Mac. Zapewnia, że przykłady zadziałają również na Visual Studio dla Windows.

Aby przygotować demonstrację, Gerald tworzy podstawową klasę Person z pojedynczą właściwością Name:

public class Person 
{
    public string Name { get; set; }
}
public class Person 
{
    public string Name { get; set; }
}

Następnie inicjalizuje instancję tej klasy, aby pokazać, jak operator null coalescing działa w rzeczywistych scenariuszach.

Zastąpienie Sprawdzania Null Operatorem Null-Coalescing (??)

Gerald teraz demonstruje, jak operator null coalescing (??) można wykorzystać do uproszczenia logiki sprawdzania null. Przypisuje null do właściwości Name, a następnie używa ?? aby dostarczyć wartość domyślną:

var name = person.Name ?? "Gerald";
var name = person.Name ?? "Gerald";

Gerald wyjaśnia, że przed wprowadzeniem tego operatora programiści używaliby instrukcji if:

string name;
if (person.Name == null)
{
    name = "Gerald";
}
else
{
    name = person.Name;
}
string name;
if (person.Name == null)
{
    name = "Gerald";
}
else
{
    name = person.Name;
}

Dzięki użyciu ??, ta logika zostaje zredukowana do jednej linii. Gdy person.Name jest null, przypisywana jest "Gerald"; w przeciwnym razie person.Name zachowuje swoją wartość. Uruchamia program i potwierdza poprawność wyniku.

Null-Coalescing do Rzucania Wyjątków

Następnie Gerald bada kolejny przypadek użycia: rzucanie wyjątków przy użyciu operatora null coalescing. Zamiast dostarczać wartość domyślną, demonstruje, jak rzucić wyjątek w przypadku napotkania null:

var name = person.Name ?? throw new ArgumentNullException(nameof(person.Name), "Name cannot be null");
var name = person.Name ?? throw new ArgumentNullException(nameof(person.Name), "Name cannot be null");

Gerald zaznacza, że jest to szczególnie przydatne przy pracy z parametrami metod lub właściwościami, gdzie null nie powinien być dozwolony. Wyjaśnia, że ta funkcja została wprowadzona w C# 7 lub 8, w zależności od ustawień projektu. Uruchomienie kodu z wartością null dla person.Name skutkuje ArgumentNullException, skutecznie zapobiegając niezamierzonym odwołaniom null.

Null Coalescing Compound Assignment (??=)

Gerald przechodzi do omówienia operatora null coalescing compound assignment (??=), który oferuje jeszcze bardziej uproszczony sposób przypisywania wartości domyślnych. Zamiast pisania:

if (person.Name == null)
{
    person.Name = "Gerald";
}
if (person.Name == null)
{
    person.Name = "Gerald";
}

Upraszcza to do:

person.Name ??= "Gerald";
person.Name ??= "Gerald";

Gerald wyjaśnia, że ??= przypisuje określoną wartość tylko wtedy, gdy lewostronny operand jest null. Jeśli person.Name już ma wartość, pozostaje ona niezmieniona. Ten operator jest szczególnie przydatny do inicjalizacji pól lub zapewnienia, że zmienne nigdy nie pozostają null.

Łączenie z Operatorem Warunków Nullowych

W finalnej sekcji, Gerald pokazuje, jak operator null coalescing można połączyć z operatorem warunków nullowych (?.). Operator warunków nullowych pozwala na bezpieczny dostęp do właściwości bez powodowania NullReferenceException. Podaje przykład:

var length = person?.Name?.Length ?? 0;
var length = person?.Name?.Length ?? 0;

Gerald wyjaśnia, że to zapewnia, że jeśli person lub Name jest null, wynik domyślnie wynosi 0, zamiast rzucać wyjątek. To połączenie jest przydatne, kiedy pracuje się z typami odniesień, które mogą być null, lub złożonymi hierarchiami obiektów.

Wnioski

Przez całe wideo, Gerald Versluis skutecznie wyjaśnia moc operatora null coalescing (??) i operatora przypisania złożonego null coalescing (??=). Pokazuje, jak te operatory mogą zastąpić tradycyjne sprawdzanie null, czyniąc kod bardziej zwięzłym i czytelnym. Dzięki wykorzystaniu tych funkcji, programiści mogą pisać czystsze i bardziej wydajne aplikacje w C#.

Jeśli jesteś zainteresowany zobaczeniem tych koncepcji w działaniu, obejrzyj pełne wideo Geralda Versluisa na temat "Understanding C# Null Coalescing Operator (?? and ??=)."

Hero Worlddot related to Zrozumienie operatora koalescencji Null w C#
Hero Affiliate related to Zrozumienie operatora koalescencji Null w C#

Zarabiaj więcej, dzieląc się tym, co kochasz

Tworzysz treści dla deweloperów pracujących z .NET, C#, Java, Python, czy Node.js? Zamień swoją wiedzę specjalistyczną na dodatkowy dochód!

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie