Null-Koaleszenzoperatoren
Verwenden Sie ?? und ??= für Ersatzwerte.
Null-Koaleszenzoperatoren ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.
Der Operator ??
Der Nullkoaleszenzoperator ?? gibt seinen linken Operanden zurück, wenn dieser nicht null ist, andernfalls den rechten Operanden. Er ist eine kompakte Möglichkeit, einen Ersatzwert festzulegen.
using System;
class Program {
static void Main() {
int? maybe = null;
int value = maybe ?? -1;
Console.WriteLine(value);
}
}?? wählt den ersten Wert, der nicht null ist
Wenn die linke Seite einen Wert enthält, wird dieser verwendet und die rechte Seite ignoriert.
using System;
class Program {
static void Main() {
int? a = 7;
Console.WriteLine(a ?? 0);
}
}?? mit Referenztypen
?? funktioniert auch mit Referenztypen wie string und liefert bei null einen Standardtext.
using System;
class Program {
static void Main() {
string name = null;
Console.WriteLine(name ?? "Guest");
}
}?? verketten
Sie können mehrere Ersatzwerte verketten; der erste Wert, der nicht null ist, wird verwendet.
using System;
class Program {
static void Main() {
string a = null, c = "third";
string b = null;
Console.WriteLine(a ?? b ?? c ?? "last");
}
}?? gibt den zugrunde liegenden Typ zurück
Wenn links int? und rechts int steht, ist das Ergebnis ein einfacher int, da null nicht mehr auftreten kann.
using System;
class Program {
static void Main() {
int? maybe = null;
int sure = maybe ?? 0;
Console.WriteLine(sure + 5);
}
}Der ??=-Operator
Die Null-Koaleszenzzuweisung ??= weist die rechte Seite nur dann zu, wenn links aktuell null steht.
using System;
class Program {
static void Main() {
int? count = null;
count ??= 10;
Console.WriteLine(count);
}
}??= lässt vorhandene Werte unverändert
Wenn die Variable bereits einen Wert enthält, tut ??= nichts.
using System;
class Program {
static void Main() {
string config = "custom";
config ??= "default";
Console.WriteLine(config);
}
}Lazy-Initialisierung mit ??=
??= eignet sich hervorragend, um einen Wert beim ersten Mal festzulegen und anschließend beizubehalten.
using System;
class Program {
static string cache = null;
static string GetData() {
cache ??= "loaded";
return cache;
}
static void Main() {
Console.WriteLine(GetData());
Console.WriteLine(GetData());
}
}?? im Vergleich zu GetValueOrDefault
Beide liefern Ersatzwerte, aber ?? ist flexibler: Es funktioniert mit Referenztypen und der Ersatzwert kann ein beliebiger Ausdruck sein.
using System;
class Program {
static void Main() {
int? n = null;
Console.WriteLine(n ?? 5);
Console.WriteLine(n.GetValueOrDefault(5));
}
}?? in Methodenargumenten
Verwenden Sie ?? direkt im Ausdruck, um genau dort einen Standardwert bereitzustellen, wo ein Wert benötigt wird.
using System;
class Program {
static void Greet(string name) {
Console.WriteLine("Hello, " + name);
}
static void Main() {
string input = null;
Greet(input ?? "friend");
}
}Kurzschlussverhalten
Die rechte Seite von ?? wird nur ausgewertet, wenn die linke Seite null ist, ähnlich wie bei einer Kurzschlussauswertung.
using System;
class Program {
static int Compute() {
Console.WriteLine("Computed");
return 42;
}
static void Main() {
int? known = 1;
int result = known ?? Compute();
Console.WriteLine(result);
}
}Kurzer Test
Testen Sie Ihr Verständnis der Null-Koaleszenzoperatoren.
Zusammenfassung
Der Operator ?? gibt den linken Wert zurück, wenn er nicht null ist, andernfalls den rechten. Außerdem kann er verkettet werden. Der Ergebnistyp verliert seine Nullable-Eigenschaft, wenn ein nicht-nullbarer Ersatzwert bereitgestellt wird.
??= weist nur dann einen Wert zu, wenn das Ziel null ist, und eignet sich daher ideal für Standardwerte und die Lazy-Initialisierung. Beide Operatoren werten die rechte Seite nur bei Bedarf aus.
Häufig gestellte Fragen
Ist die Lektion „Null-Koaleszenzoperatoren“ kostenlos?
Ja — der vollständige Text von „Null-Koaleszenzoperatoren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Null-Koaleszenzoperatoren“?
Verwenden Sie ?? und ??= für Ersatzwerte. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C# Academy zu starten?
Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Null-Koaleszenzoperatoren“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?
Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Nullable-Wertetypen kennenlernen
- HasValue- und Value-Eigenschaften
- Null-Koaleszenzoperatoren
- Nullable-Werte in Berechnungen