C# - Nullables

Hallo, ambitionierte Programmierer! Heute tauchen wir ein in die faszinierende Welt der Nullables in C#. Machen Sie sich keine Sorgen, wenn Sie neu im Programmieren sind – ich werde Sie durch dieses Konzept Schritt für Schritt führen, genau wie ich es in den letzten Jahren für unzählige Schüler getan habe. Lassen Sie uns gemeinsam diese aufregende Reise antreten!

C# -  Nullables

Was sind Nullables?

Stellen Sie sich vor, Sie füllen ein Formular aus, und es gibt ein Feld für Ihren Mittelnamen. Aber was ist, wenn Sie keinen Mittelnamen haben? In der realen Welt würden Sie es einfach leer lassen. In C# haben wir ein ähnliches Konzept namens Nullables.

Nullables sind eine spezielle Funktion in C#, die es价值 Typen (wie int, double, bool) erlauben, einen zusätzlichen Zustand zu haben: null. Normalerweise können Werttypen nicht null sein, aber Nullables geben uns diese Flexibilität.

Grundlegende Syntax

Um einen Nullable-Typ zu deklarieren, verwenden wir das ?-Symbol nach dem Typennamen. Hier ist ein Beispiel:

int? nullableInt = null;
double? nullableDouble = 3.14;
bool? nullableBool = true;

In diesem Code:

  • nullableInt ist eine Ganzzahl, die null sein kann, und wir haben sie auf null gesetzt.
  • nullableDouble ist eine Fließkommazahl, die null sein kann, aber wir haben ihr einen Wert gegeben.
  • nullableBool ist ein Boolescher Wert, der null sein kann, und wir haben ihn auf true gesetzt.

Prüfen auf Null

Wenn Sie mit Nullables arbeiten, ist es entscheidend, zu überprüfen, ob sie einen Wert haben, bevor Sie sie verwenden. Dies können wir mit der Eigenschaft HasValue tun:

int? maybeNumber = null;

if (maybeNumber.HasValue)
{
Console.WriteLine($"Der Wert ist: {maybeNumber.Value}");
}
else
{
Console.WriteLine("Der Wert ist null");
}

Dieser Code überprüft, ob maybeNumber einen Wert hat. Wenn ja, drucken wir den Wert aus; anderenfalls sagen wir, dass er null ist.

Verwenden von Nullable-Werten

Um den Wert eines Nullables zu verwenden, können wir auf seine Value-Eigenschaft zugreifen. Aber wir müssen vorsichtig sein! Wenn wir versuchen, den Value eines null Nullables zu verwenden, erhalten wir eine Ausnahme. Hier ist eine sichere Methode:

int? possibleAge = 25;

int actualAge = possibleAge ?? 0;

Console.WriteLine($"Alter: {actualAge}");

In diesem Beispiel wird actualAge auf 0 gesetzt, wenn possibleAge null ist. Dies führt uns zu unserem nächsten Thema...

Der Null Coalescing Operator (??)

Der Null Coalescing Operator (??) ist wie ein freundlicher Beschützer, der uns hilft, mit potenziellen Nullwerten umzugehen. Es ist eine Abkürzung dafür, "Verwenden Sie diesen Wert, wenn er nicht null ist, anderenfalls verwenden Sie diesen Standardwert."

Grundlegende Verwendung

Hier ist, wie wir den Null Coalescing Operator verwenden:

string name = null;
string displayName = name ?? "Gast";

Console.WriteLine($"Willkommen, {displayName}!");

In diesem Code wird displayName auf "Gast" gesetzt, wenn name null ist (was er ist). Es ist eine knappe Methode, Standardwerte bereitzustellen.

Verkettung des Null Coalescing Operators

Wir können mehrere ??-Operatoren verketteln, um mehrere potenzielle Werte zu überprüfen:

string firstName = null;
string middleName = null;
string lastName = "Smith";

string fullName = firstName ?? middleName ?? lastName ?? "Unbekannt";

Console.WriteLine($"Vollständiger Name: {fullName}");

Dieser Code verwendet den ersten nicht-nullen Wert, den er findet, oder "Unbekannt", wenn alle null sind.

Null Coalescing mit Methodenaufrufen

Der ??-Operator kann auch mit Methodenaufrufen verwendet werden:

public string GetUserName()
{
// Stellen Sie sich vor, diese Methode könnte null zurückgeben
return null;
}

string userName = GetUserName() ?? "StandardBenutzer";
Console.WriteLine($"Benutzer: {userName}");

Dies ist besonders nützlich, wenn man mit Methoden zu tun hat, die möglicherweise null zurückgeben.

Praktische Beispiele

Sehen wir uns einige realistische Szenarien an, in denen Nullables und der Null Coalescing Operator nützlich sind:

Beispiel 1: Benutzer-Eingabe

Console.Write("Geben Sie Ihr Alter ein (oder drücken Sie Enter, um zu überspringen): ");
string input = Console.ReadLine();

int? age = string.IsNullOrEmpty(input) ? null : int.Parse(input);

string message = age.HasValue
? $"Sie sind {age.Value} Jahre alt."
: "Alter nicht angegeben.";

Console.WriteLine(message);

Dieser Code ermöglicht es einem Benutzer, sein Alter einzugeben oder die Frage zu überspringen. Wir verwenden eine Nullable int, um das Alter darzustellen, das möglicherweise oder nicht bereitgestellt wird.

Beispiel 2: Datenbankabfragen

Stellen Sie sich vor, wir fragen eine Datenbank nach Informationen eines Benutzers ab:

public class User
{
public string Name { get; set; }
public int? Age { get; set; }
}

User user = GetUserFromDatabase(); // Angenommen, diese Methode existiert

string ageDisplay = user.Age.HasValue
? $"{user.Age.Value} Jahre alt"
: "Alter unbekannt";

Console.WriteLine($"Benutzer: {user.Name ?? "Anonym"}, {ageDisplay}");

In diesem Beispiel verwenden wir Nullables, um die Möglichkeit zu berücksichtigen, dass das Alter des Benutzers möglicherweise nicht in der Datenbank ist, und wir verwenden den Null Coalescing Operator, um einen Standardnamen bereitzustellen, wenn dieser nicht verfügbar ist.

Schlussfolgerung

Nullables und der Null Coalescing Operator sind mächtige Werkzeuge in C#, die uns helfen, robuster und flexibleren Code zu schreiben. Sie ermöglichen es uns, Situationen zu bewältigen, in denen Daten möglicherweise fehlen, und machen unsere Programme resilienter und benutzerfreundlicher.

Denken Sie daran, Programmieren ist wie Kochen – es erfordert Übung, um es richtig zu machen. Haben Sie keine Angst, diese Konzepte in Ihren eigenen Projekten auszuprobieren. Bevor Sie es wissen, werden Sie Nullables und ?? wie ein Profi verwenden!

Weiterschreiben, weiterlernen und vor allem Spaß haben auf Ihrer Programmierreise!

Credits: Image by storyset