Gegen Nullwerte absichern
Validierung und Muster.
Gegen Nullwerte absichern ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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.
Warum sollten Sie null absichern?
Eine Methode, die unerwartet null erhält, stürzt später oft mit einer verwirrenden NullReferenceException tief im Aufrufstapel ab.
Eine Absicherung bedeutet, Argumente sofort zu prüfen und eindeutig fehlzuschlagen, sodass der Fehler direkt auf die tatsächliche Ursache hinweist.
Klassische Nullprüfung
Die einfachste Absicherung ist eine explizite Prüfung, die bei einem erforderlichen Argument mit dem Wert null eine ArgumentNullException auslöst.
So validieren Sie die Eingabe an der Grenze Ihrer Methode, bevor irgendeine Verarbeitung beginnt.
void Save(string path)
{
if (path == null)
throw new System.ArgumentNullException(nameof(path));
System.Console.WriteLine(path);
}nameof verwenden
Übergeben Sie nameof(path) statt einer fest codierten Zeichenfolge. Die Ausnahme meldet dann den exakten Parameternamen und bleibt korrekt, wenn Sie den Parameter umbenennen.
Das erleichtert das Debugging erheblich, wenn die Ausnahme protokolliert wird.
void Greet(string user)
{
if (user is null)
throw new System.ArgumentNullException(nameof(user));
System.Console.WriteLine("Hi " + user);
}ThrowIfNull-Hilfsmethode
Modernes C# bietet ArgumentNullException.ThrowIfNull(arg). Die Methode prüft auf null und löst automatisch eine Ausnahme mit dem korrekten Parameternamen aus.
Sie ist übersichtlich und der bevorzugte Stil für Absicherungen in aktuellem .NET-Code.
void Process(object data)
{
System.ArgumentNullException.ThrowIfNull(data);
System.Console.WriteLine("Processing");
}Eine ausführbare Absicherung
Dieses Programm zeigt, wie eine Absicherung ein null-Argument abfängt und sauber meldet, statt später abzustürzen.
Führen Sie es aus, um die Ausnahmemeldung mit dem Namen des fehlerhaften Parameters zu sehen.
using System;
class Program
{
static void Print(string text)
{
ArgumentNullException.ThrowIfNull(text);
Console.WriteLine(text);
}
static void Main()
{
try { Print(null); }
catch (ArgumentNullException ex) { Console.WriteLine(ex.ParamName); }
}
}Absicherung mit ?? throw
Sie können Zuweisung und Absicherung kombinieren, indem Sie ?? mit throw verwenden. So validieren und speichern Sie den Wert in einer einzigen Zeile.
Dieses Muster ist in Konstruktoren beim Zuweisen zu einem Feld sehr verbreitet.
class Service
{
private readonly string _name;
public Service(string name)
=> _name = name ?? throw new System.ArgumentNullException(nameof(name));
}Leer oder null
Bei Zeichenfolgen sind null und leer zwei unterschiedliche Probleme. Verwenden Sie string.IsNullOrEmpty oder string.IsNullOrWhiteSpace, um beide Fälle gleichzeitig abzufangen.
Für einen leeren, aber nicht null-haltigen Wert ist eine ArgumentException (nicht ArgumentNullException) passend.
void SetName(string name)
{
if (string.IsNullOrWhiteSpace(name))
throw new System.ArgumentException("Name required", nameof(name));
}Absicherung mit Mustern
Die Muster is null und is not null sind klar verständlich und können nicht durch überladene Gleichheitsoperatoren getäuscht werden.
Bevorzugen Sie is null gegenüber == null, wenn ein Typ möglicherweise == überschreibt.
object value = null;
if (value is null)
System.Console.WriteLine("It is null");
if (value is not null)
System.Console.WriteLine("Has value");Standardwert statt Ausnahme
Nicht jeder null-Wert ist ein Fehler. Manchmal ist ein sinnvoller Standardwert besser als eine Ausnahme.
Verwenden Sie ??, wenn null zulässig ist, und lösen Sie nur dann eine Ausnahme aus, wenn der Wert tatsächlich erforderlich ist.
string BuildPath(string folder)
{
folder ??= "/tmp";
return folder + "/file.txt";
}Nullable-Referenztypen helfen
Wenn Nullable-Referenztypen aktiviert sind, warnt der Compiler, wenn Sie möglicherweise auf einen null-haltigen Wert zugreifen. Dadurch werden Fehler bereits vor der Laufzeit erkannt.
Die Deklaration von string (nicht null) gegenüber string? (nullable) dokumentiert Ihre Absicht und unterstützt den Analyzer.
#nullable enable
string required = "ok";
string? optional = null;
System.Console.WriteLine(optional?.Length ?? 0);Nach der Absicherung sicher verwenden
Sobald Sie am Anfang einer Methode eine Absicherung vorgenommen haben, kann der restliche Methodenkörper den Wert ohne wiederholte Nullprüfungen verwenden.
Dieses Programm sichert das Argument ab und verwendet es anschließend bedenkenlos.
using System;
class Program
{
static int Length(string s)
{
ArgumentNullException.ThrowIfNull(s);
return s.Length;
}
static void Main()
{
Console.WriteLine(Length("hello"));
}
}Kurztest
Testen Sie Ihr Verständnis der Absicherung gegen null.
Zusammenfassung
Sichern Sie erforderliche Argumente am Anfang einer Methode ab. Verwenden Sie ArgumentNullException.ThrowIfNull oder ?? throw zusammen mit nameof, um klare Fehlermeldungen zu erhalten.
Verwenden Sie string.IsNullOrWhiteSpace für leere Zeichenfolgen, is null-Muster für sichere Prüfungen und ??, wenn ein Standardwert akzeptabel ist, statt einen Fehler auszulösen.
Häufig gestellte Fragen
Ist die Lektion „Gegen Nullwerte absichern“ kostenlos?
Ja — der vollständige Text von „Gegen Nullwerte absichern“ 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 „Gegen Nullwerte absichern“?
Validierung und Muster. 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 4 von 4.
Wie lange dauert die Lektion „Gegen Nullwerte absichern“?
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