Nullable w obliczeniach
Poznaj sposób propagowania wartości null w działaniach arytmetycznych.
Nullable w obliczeniach to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 4 lekcji w sumie.
Operatory podniesione
C# „podnosi” operatory arytmetyczne i porównania, aby działały z typami nullable. Operatory takie jak + automatycznie otrzymują wersję działającą z wartościami nullable.
using System;
class Program {
static void Main() {
int? a = 5;
int? b = 3;
Console.WriteLine(a + b);
}
}Null propaguje się przez działania matematyczne
Jeśli dowolny operand w podniesionym wyrażeniu arytmetycznym ma wartość null, wynikiem jest null.
using System;
class Program {
static void Main() {
int? a = 5;
int? b = null;
int? sum = a + b;
Console.WriteLine(sum.HasValue);
}
}Wyświetlanie wyników null
Wynik arytmetyczny o wartości null jest wyświetlany jako pusty ciąg znaków, zgodnie ze sposobem wyświetlania wartości nullable.
using System;
class Program {
static void Main() {
int? a = null;
Console.WriteLine("Result: [" + (a * 2) + "]");
}
}Łączenie wartości nullable i non-nullable
W działaniach matematycznych można łączyć int i int?; wartość int jest konwertowana na typ nullable, a wynik również jest nullable.
using System;
class Program {
static void Main() {
int? a = 10;
int b = 4;
int? result = a - b;
Console.WriteLine(result);
}
}Podniesione operatory porównania
Operatory porównania również są podnoszone dla wartości nullable. Jeśli któraś ze stron ma wartość null, porównania porządkujące, takie jak <, zwracają false.
using System;
class Program {
static void Main() {
int? a = null;
int? b = 5;
Console.WriteLine(a < b);
Console.WriteLine(a > b);
}
}Równość z wartością null
W przeciwieństwie do porównań porządkujących równość jest zdefiniowana: dwie wartości null są równe, a null nie jest równe żadnej liczbie.
using System;
class Program {
static void Main() {
int? a = null;
int? b = null;
Console.WriteLine(a == b);
Console.WriteLine(a == 0);
}
}Łączenie operatora ?? z działaniami matematycznymi
Należy użyć operatora ??, aby zastąpić null bezpieczną liczbą przed wykonaniem obliczeń i zachować niebędący nullem wynik.
using System;
class Program {
static void Main() {
int? a = null;
int total = (a ?? 0) + 100;
Console.WriteLine(total);
}
}Zabezpieczanie dzielenia
Należy połączyć sprawdzanie HasValue z obliczeniami, aby uniknąć zarówno wartości null, jak i dzielenia przez zero.
using System;
class Program {
static void Main() {
int? a = 20, b = 4;
if (a.HasValue && b.HasValue && b.Value != 0)
Console.WriteLine(a.Value / b.Value);
}
}Sumowanie danych nullable
Podczas sumowania danych, które mogą zawierać wartości null, należy zdecydować, czy je pomijać, czy traktować null jako zero.
using System;
class Program {
static void Main() {
int?[] data = { 5, null, 10, null, 2 };
int total = 0;
foreach (var x in data)
total += x ?? 0;
Console.WriteLine(total);
}
}Wartość bool nullable w logice
Typ bool? uczestniczy w podniesionych działaniach logicznych: true | null daje true, false & null daje false, a w pozostałych przypadkach wynikiem jest null.
using System;
class Program {
static void Main() {
bool? a = null;
bool? b = true;
Console.WriteLine(a | b);
}
}Konwertowanie wyniku na zwykłą wartość
Po wykonaniu obliczeń na wartościach nullable należy użyć operatora ?? lub GetValueOrDefault, aby uzyskać zwykłą wartość do wyświetlenia.
using System;
class Program {
static void Main() {
int? a = 6, b = 7;
int product = (a * b) ?? 0;
Console.WriteLine(product);
}
}Szybkie sprawdzenie
Proszę sprawdzić wiedzę na temat obliczeń na wartościach nullable.
Podsumowanie
C# podnosi operatory arytmetyczne, porównania i operatory logiczne do typów nullable. Dowolny operand o wartości null w działaniu arytmetycznym daje wynik null, a porównania porządkujące z wartością null zwracają false, podczas gdy równość jest dobrze zdefiniowana.
Należy użyć operatora ?? lub GetValueOrDefault, aby zastąpić wartości bezpiecznymi wartościami przed obliczeniami lub po nich, a w razie potrzeby użyć HasValue do sprawdzania.
Często zadawane pytania
Czy lekcja „Nullable w obliczeniach” jest bezpłatna?
Tak — pełny tekst „Nullable w obliczeniach” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Nullable w obliczeniach”?
Poznaj sposób propagowania wartości null w działaniach arytmetycznych. Ćwiczysz C# Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć C# Academy?
Nie wymagamy żadnego doświadczenia. C# Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Nullable w obliczeniach”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji C# Academy?
Tak. Każda lekcja C# Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Wprowadzenie do typów wartości Nullable
- Właściwości HasValue i Value
- Operatory null-coalescing
- Nullable w obliczeniach