IRONSOFTWAREHOME

Zrozumienie operatora koalescencji Null w C#

Zrozumienie operatora złączenia z.Null (?? i ??=)

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łasnością Name:

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 wartość null do własności Name, a następnie używa ?? aby dostarczyć wartość domyślną:

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;
}

Używając ??, logika ta jest zredukowana do jednej linii. Gdy person.Name jest null, przypisana jest wartość '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");

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 do null.

Złożona metoda przypisania wartości (??=)

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";
}

Upraszcza to do:

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 warunkowy null pozwala na bezpieczny dostęp do właściwości bez powodowania NullReferenceException. Podaje przykład:

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

Gerald wyjaśnia, że to zapewnia, iż jeśli person lub Name jest null, wynik domyślnie wynosi 0 zamiast rzucania wyjątku. 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 (?? i ??=)."

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Otrzymaj swoją Konsultację Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta