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!

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#.
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.
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; }
}Public Class Person
Public Property Name As String
End ClassNastępnie inicjalizuje instancję tej klasy, aby pokazać, jak operator null coalescing działa w rzeczywistych scenariuszach.
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";Dim name As String = If(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;
}Dim name As String
If person.Name Is Nothing Then
name = "Gerald"
Else
name = person.Name
End IfUż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.
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");Dim name As String = If(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.
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 Is Nothing Then
person.Name = "Gerald"
End IfUpraszcza to do:
person.Name ??= "Gerald";person.Name = If(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.
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;Dim length As Integer = If(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.
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 ??=)."
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy