TOC

This article has been localized into German by the community.

Datenarten:

Nulltypen

NULL bedeutet wörtlich nichts - eine Variable, die noch keinen Wert hat. An dieser Stelle des Tutorials haben Sie vielleicht bereits mit Variablen gearbeitet, die nicht initialisiert wurden, ob absichtlich oder nicht - wenn ja, wissen Sie auch, dass Sie immer sicherstellen müssen, dass eine Variable einen Wert hat, bevor Sie versuchen, auf diesen Wert zuzugreifen. Wenn nicht, werden Sie wahrscheinlich mit einer NullReferenceException konfrontiert werden.

NULLEN sind besonders relevant, wenn es um eigene Objekte und Strings geht. Auf der anderen Seite, wenn es sich um Zahlen handelt, z.B. eine Ganzzahl, Sie werden sehen, dass sie immer einen (Standard) Wert hat. Bei einer Ganzzahl ist der Standardwert 0 (Null), was niemals mit NULL verwechselt werden soll - sie sind nicht alle gleich, auch wenn einige "nicht statisch typisierte" Programmiersprachen sie möglicherweise gleich behandeln. 0 ist eine Zahl - NULL ist nichts.

Wenn Sie also jemals selbst eine Zahl finden möchten, die einen nicht definierten / NULL-Wert darstellt, fühlen Sie sich möglicherweise ob Sie festhängen, weil Sie einer Integer-Variablen keinen Nullwert zuweisen können. Es sei denn, diese Ganzzahl ist als Nullable definiert - ein spezielles Sprachkonstrukt, das für Situationen wie diese erstellt wurde. Sie definieren eine nullwertfähige Variable, indem Sie den Typ mit einem Fragezeichen nachfixieren. Hier ist ein Beispiel, um den Unterschied zu veranschaulichen:

int notNullable = null; // Will cause an error from the compiler

int? nullable = null; // Just fine - it's nullable!

Dies gilt für alle so genannten Wertetypen wie Ganzzahlen , Fließkomma, bools und Strukturen. Zeichenfolgen und Objekte hingegen sind Referenztypen und können nicht als nullwert deklariert werden, da sie standardmäßig nullfähig sind.

Überprüfung eines Nullwerts auf null

Nachdem Sie nun eine Variable definiert haben, die Null sein könnte, ist es offensichtlich wichtig zu prüfen, ob dies der Fall ist. Sie können dies auf zwei Arten tun: Vergleichen Sie einfach die Variable mit dem Null-Kewyord, wie Sie es bei anderen Typen tun würden, oder verwenden Sie die Eigenschaft HasValue, die ein Nullable-Objekt von der System.Nullable-Struktur erbt. Hier ist ein Beispiel:

int? nullable = null;
if (nullable == null)
    Console.WriteLine("It's a null!");
if (nullable.HasValue)
    Console.WriteLine("It's a null!");

Das Ergebnis ist das gleiche. Verwenden Sie daher die Methode, die Sie am besten finden und leicht verständlich finden. Da unser Wert jetzt null sein kann, sollten Sie immer überprüfen, bevor Sie ihn verwenden - andernfalls könnten Sie auf eine Ausnahme stoßen.

Verwenden eines Nullwerts

Ein Nullable-Objekt erbt von der System.Nullable auch die Eigenschaft Value. Dies kann verwendet werden, um den tatsächlichen Wert des Nullable-Objekts abzurufen. Für einfache Vergleichsoperationen, z.B. Mit den Operatoren == und != können Sie in C# die Value-Eigenschaft weglassen und das Nullable-Objekt direkt vergleichen. Mit anderen Worten, beide Beispiele erreichen dasselbe:

int? nullable = 42;

if (nullable.Value == 42)  
    Console.WriteLine("It's 42!");  

if (nullable == 42)  
    Console.WriteLine("It's 42!");

Nullable-Objekte kommen immer von einem Basisdatentyp, z. eine Ganzzahl wie in den vorherigen Beispielen. Während diese Datentypen einen Standardwert haben können, ist der Standardwert eines Nullwerts immer Null. Aus diesem Grund müssen Sie nach Nullreferenzen suchen, bevor Sie versuchen, den Wert zu verwenden, wie zuvor beschrieben. Ein Nullable-Typ erbt jedoch eine sehr nette Hilfsmethode, die Sie verwenden können: GetValueOrDefault(). Sie wird den Wert des Nullable-Objekts zurückgeben, es sei denn, er ist null. In diesem Fall wird der Standardwert des zugrunde liegenden Typs zurückgegeben. Für eine Nullable-Ganzzahl wird sie 0 zurückgeben, für eine Nullable-Boolsche-variable würde sie false zurückgeben und so weiter. Dadurch können Sie sowohl das Überprüfen als auch das Abrufen des Werts in einer einzelnen Anweisung durchführen:

if ((nullable.HasValue) && (nullable.Value == 42))
    Console.WriteLine("It's 42!");

if(nullable.GetValueOrDefault() == 42)
    Console.WriteLine("It's 42!");

Wie Sie sehen können, ist das letzte Beispiel kürzer und einfacher zu lesen, wobei dasselbe erreicht wird.

Zusammenfassung

Werttypen in C# wie Integer und Boolsche Werte haben immer einen Standardwert. Wenn Sie dieses Verhalten umgehen möchten, z.B.: weil Sie zwischen 0 und null unterscheiden müssen, oder weil Sie wissen müssen, ob der Benutzer aktiv "false" für etwas ausgewählt hat oder ob die Variable nur den Standardwert false hat, dann können Sie die Variable Nullable machen, indem Sie den Typ mit einem ? (Fragezeichen) hinter dem Typ kennzeichnen.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!