IRONSOFTWAREHOME

Operator Null-Conditional w C#

C# Null-Conditional Operator (? Operator) Wyjaśniony!

Gerald Versluis

13m 26s

W jednym ze swoich filmów Gerald Versluis napotkał pytanie dotyczące znaku zapytania (?) w jego przykładowym kodzie. To skłoniło go do stworzenia szczegółowego filmu wyjaśniającego operatora null-conditional w C#. Jesli kiedykolwiek zastanawiales sie, co ?. lub ?[ ] robi w C#, wideo Geralda jest doskonalym zrodlem do jasnego zrozumienia tego. Przejdźmy przez jego wyjaśnienie krok po kroku.

Szybkie wyjaśnienie przez stronę dokumentacji

Gerald zaczyna od odniesienia do oficjalnej dokumentacji Microsoft na temat operatorów dostępu do członków i wyrażeń. Podkreśla sekcję dotyczącą operatora null-conditional, wprowadzonego w C# 6. W momencie nagrywania C# 9 był najnowszą wersją, z C# 10 na horyzoncie.

Gerald wyjasnia, ze gdy uzywasz a?.x lub a?[index], jesli a jest null, cale wyrazenie zwraca null zamiast rzucic NullReferenceException. W przeciwnym razie pobiera wartość normalnie.

Chociaż dokumentacja jest pomocna, Gerald preferuje praktyczne przykłady, więc przechodzi do interaktywnego środowiska kodowania.

Przykład przez try.dot.net

Aby zademonstrować, Gerald przechodzi do try.dot.net, interaktywnego środowiska C#. Wspomina, że to narzędzie działa na Blazor, umożliwiając użytkownikom wykonywanie kodu C# bezpośrednio w przeglądarce.

Krótko pokazuje domyślny przykład ciągu Fibonacciego, który jest wstępnie załadowany w try.dot.net, a następnie czyści go, aby zacząć nowy przykład koncentrujący się na operatorze null-conditional.

Operatorzy null-conditional wyjaśnieni

Gerald tworzy prostą klasę Person z następującymi właściwościami:

public class Person
{
    // The Name property of the Person
    public string Name { get; set; }
    
    // A reference to another Person object representing the partner
    public Person Partner { get; set; }
    
    // An array representing the Person's hobbies
    public string[] Hobbies { get; set; }
}

Inicjalizuje on obiekt Person jako null:

// Initialize a Person object as null
Person person = null;

// Attempting to access a property of a null object will throw a NullReferenceException
Console.WriteLine(person.Name);

Uruchomienie tego kodu wyrzuca NullReferenceException, poniewaz person jest null. Aby temu zapobiec, programiści zazwyczaj dodają kontrolę przed dostępem do właściwości:

// Check if the person object is not null before accessing its properties
if (person != null)
{
    Console.WriteLine(person.Name);
}

Chociaż to działa, wprowadza dodatkowe linie kodu. Gerald wyjaśnia, jak operator null-conditional to upraszcza:

// Using the null-conditional operator to safely access the Name property
Console.WriteLine(person?.Name);

Teraz, jesli person jest null, wyrazenie po prostu zwraca null zamiast spowodowac awarie.

Operator null-conditional na właściwości

Gerald rozszerza przyklad poprzez ustawienie obiektu Person:

// Create a new Person object
Person person = new Person { Name = "Gerald" };

// Access the Name property safely
Console.WriteLine(person?.Name);

Poniewaz person nie jest null, poprawnie wyswietla "Gerald".

Następnie pokazuje zagnieżdżony przykład:

// Safely access the Name property of the Partner object
Console.WriteLine(person?.Partner?.Name);

Jesli person.Partner jest null, cale wyrazenie zwraca null zamiast spowodowac wyjatek. To unika niepotrzebnych warunków if.

Łączenie operatorów null-conditional

Gerald wyjaśnia, że operatory null-conditional mogą być łączone, co sprawia, że kod jest czytelniejszy przy pracy z głęboko zagnieżdżonymi obiektami. Zamiast pisać wiele kontroli null, można użyć:

// Chain null-conditional operators to safely access nested objects
Console.WriteLine(person?.Partner?.Name);

Jesli person lub person.Partner jest null, wynik bedzie null, co zapobiega bledom wykonania.

Operatorzy null-conditional na tablicach

Gerald rozszerza dyskusję na tablice i kolekcje. Dodaje tablicę Hobbies do klasy Person i pokazuje, jak bezpiecznie uzyskiwać dostęp do elementów:

// Safely access the first element of the Hobbies array
Console.WriteLine(person?.Hobbies?[0]);

Tutaj, jesli person lub Hobbies jest null, wyrazenie zwraca null zamiast spowodowac wyjatek.

Wnioski

Film Geralda dostarcza dogłębnego spojrzenia na operator null-conditional w C#. Uzywajac ?. i ?[ ], deweloperzy moga pisac czystszy, bezpieczniejszy kod, ktory unika NullReferenceException. Niezależnie od pracy z właściwościami, zagnieżdżonymi obiektami czy tablicami, operator null-conditional sprawia, że kod jest bardziej zwięzły i czytelny.

Aby zobaczyć całą demonstrację, koniecznie obejrzyj film Geralda Versluisa, w którym wszystko wyjaśnia na praktycznych przykładach!

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