Null Checking Patterns
Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy. Lektion 33 von 66.
Die Prüfung auf Null ist ein wesentlicher Bestandteil beim Schreiben von robustem C#-Code. Es gibt mehrere Muster, die du verwenden kannst, um sicher auf Nullwerte zu prüfen.
Sehen wir uns einige gängige Muster zur Überprüfung auf null an:
Zuerst die grundlegende Prüfung auf null:
string name = null;
if (name == null)
{
Console.WriteLine("Name is null");
}
Ein weiteres häufiges Muster ist der Null-bedingte Operator (?.), der sicher auf Member potenziell nuller Objekte zugreift:
string name = null;
int? length = name?.Length; // length wird null sein
Der Null-Koaleszenzoperator (??) stellt einen Standardwert bereit, wenn ein Ausdruck null ist:
string name = null;
string displayName = name ?? "Unknown"; // displayName wird "Unknown" sein
Du kannst diese Muster auch für komplexere Szenarien miteinander verketten:
string name = null;
int length = (name ?? "").Length; // length wird 0 sein
Die Methode string.IsNullOrWhiteSpace() ist eine praktische Möglichkeit, in einem einzigen Aufruf zu prüfen, ob eine Zeichenfolge null oder leer ist oder nur whitespace-Zeichen enthält:
string name = null;
if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("Name is null, empty, or whitespace");
}
Dies ist besonders nützlich, wenn du null, empty strings und strings, die nur aus whitespace bestehen, auf dieselbe Weise behandeln musst. Zum Beispiel:
string name1 = null;
string name2 = "";
string name3 = " ";
// Alle drei werden die Nachricht ausgeben
if (string.IsNullOrWhiteSpace(name1)) Console.WriteLine("name1 is null/empty/whitespace");
if (string.IsNullOrWhiteSpace(name2)) Console.WriteLine("name2 is null/empty/whitespace");
if (string.IsNullOrWhiteSpace(name3)) Console.WriteLine("name3 is null/empty/whitespace");
Beachte, dass sich string.IsNullOrWhiteSpace() von einer einfachen null-Prüfung unterscheidet. Sie erfasst auch leere Zeichenfolgen sowie Zeichenfolgen, die nur Leerzeichen, Tabulatoren oder andere whitespace-Zeichen enthalten.
Aufgabe
EinfachErstelle eine Methode namens processUserName, die einen string-Parameter userName entgegennimmt. Die Methode sollte:
- Wenn
userNamenull ist, "No user provided" zurückgeben - Wenn
userNameleer ist oder nur aus whitespace besteht, "Invalid username" zurückgeben - Andernfalls "Welcome, [userName]!" zurückgeben, wobei [userName] der tatsächliche username ist
Denke daran, geeignete Muster zur null-Prüfung zu verwenden.
Probier es selbst
using System;
class ProcessUserName
{
public static string processUserName(string userName)
{
// Schreibe deinen Code hier
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null SafetyÜbe selbstständig: Online-C#-Compiler