Nullable-Wertetypen
int? und die Nullable-Struktur.
Nullable-Wertetypen ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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 nullable Werttypen?
Werttypen wie int, bool und DateTime enthalten immer einen Wert. Ein int hat standardmäßig den Wert 0 und niemals „keinen Wert“.
Manchmal müssen Sie fehlende Daten darstellen, etwa ein nicht beantwortetes Umfragefeld oder eine leere Datenbankspalte. Nullable Werttypen ermöglichen, dass ein Werttyp zusätzlich null enthalten kann.
Deklarieren mit int?
Fügen Sie nach einem Werttyp ein ? ein, um ihn nullable zu machen. int? kann jede Ganzzahl oder null enthalten.
Dies ist die häufigste Schreibweise für nullable Werttypen im alltäglichen C#-Code.
int? age = null;
int count = 5;
age = count;
System.Console.WriteLine(age);Nullable<T> im Hintergrund
Die Syntax ? ist eine Kurzschreibweise. int? ist exakt derselbe Typ wie Nullable<int>.
Nullable<T> ist eine Struktur, die einen Werttyp umschließt und ein Flag ergänzt, das verfolgt, ob ein Wert vorhanden ist.
Nullable<int> a = 10;
int? b = 10;
System.Console.WriteLine(a == b);HasValue und Value
Jeder nullable Typ stellt zwei Eigenschaften bereit. HasValue ist true, wenn ein Wert vorhanden ist, und Value gibt den zugrunde liegenden Wert zurück.
Das Lesen von Value, wenn HasValue false ist, löst eine InvalidOperationException aus. Prüfen Sie daher zuerst.
int? score = 42;
if (score.HasValue)
{
System.Console.WriteLine(score.Value);
}Ein vollständiges Beispiel
Hier ist ein vollständiges Programm. Es weist einen Wert zu, prüft HasValue und gibt das Ergebnis aus.
Führen Sie es aus, um zu sehen, wie sich ein nullable Werttyp verhält, wenn er tatsächlich Daten enthält.
using System;
class Program
{
static void Main()
{
int? temperature = 21;
if (temperature.HasValue)
Console.WriteLine("Temp: " + temperature.Value);
else
Console.WriteLine("No reading");
}
}Wenn der Wert null ist
Das Zuweisen von null bewirkt, dass HasValue false ist. Anschließend wird der else-Zweig ausgeführt.
Mit diesem Muster behandeln Sie optionale Werte sicher, ohne dass das Programm abstürzt.
using System;
class Program
{
static void Main()
{
int? temperature = null;
if (temperature.HasValue)
Console.WriteLine(temperature.Value);
else
Console.WriteLine("No reading");
}
}GetValueOrDefault
GetValueOrDefault() gibt den Wert zurück, wenn er vorhanden ist, andernfalls den Standardwert für diesen Typ (z. B. 0 für int).
Sie können auch einen eigenen Ersatzwert übergeben: GetValueOrDefault(100) gibt bei null den Wert 100 zurück.
int? quantity = null;
int result = quantity.GetValueOrDefault(100);
System.Console.WriteLine(result);Implizite Konvertierung in einen Nullable-Typ
Ein gewöhnlicher int wird automatisch in int? konvertiert, da jeder reguläre Wert auch ein gültiger Nullable-Wert ist.
Umgekehrt geschieht die Konvertierung nicht automatisch: Für die Konvertierung von int? zurück in int ist eine explizite Umwandlung oder ein Ersatzwert erforderlich, da der Nullable-Wert null sein kann.
int plain = 7;
int? wrapped = plain;
int back = (int)wrapped;
System.Console.WriteLine(back);Nullable-Typen mit anderen Werttypen
Jeder Werttyp funktioniert: bool?, double?, DateTime? und sogar benutzerdefinierte Strukturen.
Ein bool? hat drei Zustände: true, false und null. Das ist nützlich für unbeantwortete Ja-Nein-Fragen.
bool? agreed = null;
double? price = 9.99;
System.Console.WriteLine(agreed.HasValue);
System.Console.WriteLine(price.Value);Referenztypen sind bereits nullable
Klassen wie string und Arrays können bereits null sein und benötigen daher keinen Nullable<T>-Wrapper.
Das ? bei Referenztypen (z. B. string?) hat eine andere Bedeutung: Es ist eine Nullable-Referenzannotation und nicht die Struktur Nullable<T>.
Nullable-Werte vergleichen
Vergleiche funktionieren, aber beachten Sie, dass sich null besonders verhält. Zwei null-Werte sind gleich, und jeder Ordnungsvergleich mit null liefert false.
Daher ist null < 5 gleich false, und auch null > 5 ist gleich false.
int? x = null;
System.Console.WriteLine(x < 5);
System.Console.WriteLine(x == null);Kurztest
Testen Sie Ihr Verständnis von Nullable-Werttypen.
Zusammenfassung
Mit Nullable-Werttypen können auch Werttypen null enthalten. Sie schreiben sie als int?, was Nullable<int> entspricht.
Verwenden Sie HasValue zum Prüfen, Value zum Lesen (nur wenn ein Wert vorhanden ist) und GetValueOrDefault() für einen sicheren Ersatzwert. Referenztypen sind bereits von sich aus nullable.
Häufig gestellte Fragen
Ist die Lektion „Nullable-Wertetypen“ kostenlos?
Ja — der vollständige Text von „Nullable-Wertetypen“ 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 „Nullable-Wertetypen“?
int? und die Nullable-Struktur. 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 1 von 4.
Wie lange dauert die Lektion „Nullable-Wertetypen“?
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