Null-Koaleszenzoperatoren
?? und ??= als Standardwerte.
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.
Einen Ersatzwert bereitstellen
Oft möchten Sie einen Wert verwenden, wenn er vorhanden ist, und andernfalls einen Standardwert, wenn er null ist. Genau dafür gibt es den Null-Koaleszenzoperator ??.
a ?? b bedeutet: Verwende a, wenn es nicht null ist, andernfalls b.
string input = null;
string name = input ?? "Guest";
System.Console.WriteLine(name);Auswertung von ??
Die linke Seite wird zuerst ausgewertet. Wenn sie nicht null ist, wird die rechte Seite überhaupt nicht ausgewertet.
Dank dieses Kurzschlussverhaltens wird ein aufwendiger Ersatzwert nur berechnet, wenn er tatsächlich benötigt wird.
string cached = "data";
string value = cached ?? Compute();
System.Console.WriteLine(value);
// Compute() is never called hereFunktioniert mit Nullable-Werttypen
?? hebt auch Nullable-Werttypen auf. Die Kombination aus int? maybe und ?? 0 ergibt einen gewöhnlichen, nicht-nullbaren int.
So können Sie int? auf übersichtliche Weise mit einem Standardwert in int umwandeln.
int? maybe = null;
int sure = maybe ?? 0;
System.Console.WriteLine(sure);Ein ausführbares Beispiel
Dieses Programm liest eine möglicherweise null-haltige Einstellung und verwendet andernfalls einen Standardwert. Führen Sie es aus, um den Ersatzwert in Aktion zu sehen.
using System;
class Program
{
static void Main()
{
string theme = null;
string active = theme ?? "light";
Console.WriteLine("Theme: " + active);
}
}?? verketten
Sie können mehrere Ersatzwerte verketten. Der Ausdruck wählt den ersten Nicht-null-Wert von links nach rechts.
a ?? b ?? c prüft zuerst a, dann b und schließlich c als letzten Ausweg.
string a = null;
string b = null;
string c = "default";
System.Console.WriteLine(a ?? b ?? c);Der Operator ??=
Die Null-Koaleszenzzuweisung ??= weist die rechte Seite nur dann zu, wenn die linke Seite aktuell null ist.
x ??= y ist eine Kurzform für if (x == null) x = y; und lässt x unverändert, wenn es bereits einen Wert enthält.
string config = null;
config ??= "default";
System.Console.WriteLine(config);
config ??= "ignored";
System.Console.WriteLine(config);Verzögerte Initialisierung mit ??=
Eine häufige Verwendung von ??= ist die verzögerte Initialisierung: Erstellen Sie ein Objekt erst, wenn es zum ersten Mal benötigt wird.
Bei späteren Aufrufen ist das Feld bereits gesetzt, sodass ??= nichts tut.
System.Collections.Generic.List<int> items = null;
items ??= new System.Collections.Generic.List<int>();
items.Add(1);
System.Console.WriteLine(items.Count);?. und ?? kombinieren
Die Kombination aus ?. und ?? ist äußerst üblich. ?. verhindert die Ausnahme, und ?? stellt einen Wert bereit, wenn die Kette null ist.
user?.Name ?? "Unknown" liest den Namen sicher aus und verwendet standardmäßig "Unknown".
string s = null;
int length = s?.Length ?? -1;
System.Console.WriteLine(length);?? in einem vollständigen Programm
Hier arbeiten ?. und ?? zusammen, um eine sichere Länge auszugeben. Führen Sie das Programm mit einer null-Zeichenfolge aus, um den Ersatzwert zu sehen.
using System;
class Program
{
static void Main()
{
string username = null;
string display = username ?? "anonymous";
Console.WriteLine(display);
Console.WriteLine(username?.Length ?? 0);
}
}?? löst bei null eine Ausnahme aus
Die rechte Seite von ?? kann jeder Ausdruck sein, auch throw. Dadurch ist ?? eine kompakte Möglichkeit, bei einem unerwarteten null sofort abzubrechen.
name ?? throw new ArgumentNullException(nameof(name)) gibt den Namen zurück oder löst eine Ausnahme aus, wenn er null ist.
string Validate(string name) =>
name ?? throw new System.ArgumentNullException(nameof(name));Rechtsassoziatives Verhalten
?? ist rechtsassoziativ, daher wird a ?? b ?? c als a ?? (b ?? c) gruppiert.
In der Praxis bedeutet das weiterhin „der erste Nicht-null-Wert gewinnt“. Dieses Verhalten sollten Sie jedoch kennen, wenn Sie komplexe Ausdrücke analysieren.
int? a = null;
int? b = null;
int result = a ?? b ?? 99;
System.Console.WriteLine(result);Kurztest
Testen Sie Ihr Verständnis der Null-Koaleszenzoperatoren.
Zusammenfassung
?? gibt die linke Seite zurück, wenn sie nicht null ist, andernfalls die rechte Seite, und kann verkettet werden. ??= weist nur zu, wenn das Ziel null ist, und eignet sich daher ideal für die verzögerte Initialisierung.
Kombinieren Sie die Operatoren mit ?. für eine sichere und übersichtliche Behandlung von null. Mit ?? throw können Sie sogar sofort abbrechen.
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“?
?? und ??= als Standardwerte. 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
- Null-bedingter Operator
- Null-Koaleszenzoperatoren
- Gegen Nullwerte absichern