Zum Fußzeileninhalt springen
Iron Academy Logo
Lernen Sie C#
Lernen Sie C#

Andere Kategorien

Den C# Null-Koaleszenz-Operator verstehen

Der Null-Koaleszenz-Operator (??) in C# ermöglicht es Entwicklern, die Null-Prüflogik zu vereinfachen, wodurch der Code weniger umfangreich und besser lesbar wird. Anstatt langwierige if-else-Bedingungen zu schreiben, bietet dieser Operator eine prägnante Möglichkeit, Fallback-Werte zuzuweisen, wenn er auf null trifft. In diesem Artikel werden wir den Null-Koaleszenz-Operator im Detail erkunden, indem wir dem Video von Gerald Versluis folgen, "Understanding C# Null Coalescing Operator (?? und ??=)." Wir werden die wichtigsten Abschnitte des Videos aufschlüsseln und analysieren, wie Gerald diese nützliche C#-Funktion demonstriert.

Einführung

Zu Beginn des Videos stellt Gerald den Null-Koaleszenz-Operator als eine leistungsstarke Funktion in C# vor, die die Anzahl der für die Nullprüfung erforderlichen Codezeilen erheblich reduziert. Er betont, dass dieser Operator bedingte Überprüfungen vereinfacht und den Code besser lesbar macht. Zur Veranschaulichung der Vorteile geht Gerald durch eine Beispielanwendung, in der er verschiedene Anwendungsfälle des Null-Coalescing-Operators implementiert und erläutert.

Gliederung einer Beispielanwendung

Gerald beginnt mit dem Einrichten einer einfachen Konsolenanwendung. Er erwähnt, dass er in früheren Videos die try.dot.net-Website für Demonstrationen verwendet hat, aber aufgrund von Versionsbeschränkungen (er unterstützt nur C# 7) zu Visual Studio für Mac wechselt. Er versichert, dass die Beispiele auch mit Visual Studio für Windows funktionieren werden.

Um die Demonstration vorzubereiten, erstellt Gerald eine grundlegende Person-Klasse mit einer einzigen Name-Eigenschaft:

public class Person 
{
    public string Name { get; set; }
}
public class Person 
{
    public string Name { get; set; }
}

Anschließend initialisiert er eine Instanz dieser Klasse, um zu zeigen, wie der Null-Coalescing-Operator in realen Szenarien funktioniert.

Nullprüfung durch Null-Coalescing-Operator ersetzen (??)

Gerald demonstriert nun, wie der Null-Koaleszenz-Operator (??) zur Vereinfachung der Null-Prüfungslogik verwendet werden kann. Er weist der Name-Eigenschaft null zu und verwendet dann ?? einen Ausweichwert zu bieten:

var name = person.Name ?? "Gerald";
var name = person.Name ?? "Gerald";

Gerald erklärt, dass Entwickler vor der Einführung dieses Operators eine if-Anweisung verwendet haben:

string name;
if (person.Name == null)
{
    name = "Gerald";
}
else
{
    name = person.Name;
}
string name;
if (person.Name == null)
{
    name = "Gerald";
}
else
{
    name = person.Name;
}

Durch die Verwendung von ?? wird diese Logik auf eine einzige Zeile reduziert. Wenn person.Name null ist, wird "Gerald" zugewiesen; Andernfalls behält person.Name seinen Wert. Er führt das Programm aus und bestätigt, dass die Ausgabe korrekt ist.

Null-Coalescing zum Auslösen von Ausnahmen

Als Nächstes erforscht Gerald einen weiteren Anwendungsfall: das Auslösen von Ausnahmen mit dem Null-Coalescing-Operator. Anstatt einen Ausweichwert bereitzustellen, demonstriert er, wie man eine Ausnahme auslöst, wenn man auf null trifft:

var name = person.Name ?? throw new ArgumentNullException(nameof(person.Name), "Name cannot be null");
var name = person.Name ?? throw new ArgumentNullException(nameof(person.Name), "Name cannot be null");

Gerald hebt hervor, dass dies besonders nützlich ist, wenn man mit Methodenparametern oder Eigenschaften arbeitet, bei denen Null nicht erlaubt sein sollte. Er erklärt, dass diese Funktion in C# 7 oder 8 eingeführt wurde, abhängig von den Projekteinstellungen. Das Ausführen des Codes mit einem null-Wert für person.Name führt zu einem ArgumentNullException und verhindert effektiv unbeabsichtigte Nullreferenzen.

Null-Koaleszenz-Verbund-Zuweisung (??=)

Gerald geht dann auf den Null-Koaleszenz-Operator für zusammengesetzte Zuweisungen (??=) ein, der eine noch effizientere Möglichkeit bietet, Standardwerte zuzuweisen. Anstatt zu schreiben:

if (person.Name == null)
{
    person.Name = "Gerald";
}
if (person.Name == null)
{
    person.Name = "Gerald";
}

Er vereinfacht dies mit:

person.Name ??= "Gerald";
person.Name ??= "Gerald";

Gerald erklärt, dass ??= den angegebenen Wert nur zuweist, wenn der linke Operand Null ist. Wenn person.Name bereits einen Wert hat, bleibt es unverändert. Dieser Operator ist besonders nützlich, um Felder zu initialisieren oder sicherzustellen, dass Variablen niemals null bleiben.

Kombinieren mit dem Null-Bedingungsoperator

Im letzten Abschnitt demonstriert Gerald, wie der Null-Koaleszenz-Operator mit dem Null-Bedingungsoperator (?.) kombiniert werden kann. Der null-bedingte Operator ermöglicht den sicheren Zugriff auf Eigenschaften, ohne eine NullReferenceException zu verursachen. Er gibt ein Beispiel:

var length = person?.Name?.Length ?? 0;
var length = person?.Name?.Length ?? 0;

Gerald erklärt, dass dies sicherstellt, dass, wenn person oder Name null ist, das Ergebnis standardmäßig 0 ist, anstatt eine Ausnahme auszulösen. Diese Kombination ist nützlich bei der Arbeit mit nullbaren Referenztypen oder komplexen Objekthierarchien.

Abschluss

Während des gesamten Videos erklärt Gerald Versluis effektiv die Leistungsfähigkeit des Null-Koaleszenz-Operators (??) und der Null-Koaleszenz-Verbundzuweisung (??=). Er demonstriert, wie diese Operatoren herkömmliche Null-Prüfungen ersetzen können, wodurch der Code prägnanter und lesbarer wird. Durch die Nutzung dieser Funktionen können Entwickler sauberere und effizientere C#-Anwendungen schreiben.

Wenn Sie daran interessiert sind, diese Konzepte in Aktion zu sehen, sehen Sie sich das vollständige Video von Gerald Versluis über "Understanding C# Null Coalescing Operator (?? und ??=)"

Hero Worlddot related to Den C# Null-Koaleszenz-Operator verstehen
Hero Affiliate related to Den C# Null-Koaleszenz-Operator verstehen

Verdienen Sie mehr, indem Sie teilen, was Sie lieben

Erstellen Sie Inhalte für Entwickler, die mit .NET, C#, Java, Python oder Node.js arbeiten? Verwandeln Sie Ihr Fachwissen in ein zusätzliches Einkommen!

Iron Support Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an