Nullable Value Type

Eintrag zuletzt aktualisiert am: 25.11.2011

Während Referenztypen bereits in .NET 1.x den Zustand "null" als Repräsentanz des Zustandes "nicht vorhanden/nicht gesetzt" annehmen konnten, war dies für Wertetypen nicht vorgesehen. Ab .NET 2.0 existiert ein Hilfskonstrukt, um auch Wertetypen den Wert null zuweisen zu können.

In .NET 2.0 ist ein auf Null setzbarer Wertetyp eine generische Struktur, die aus dem eigentlich Wert (Value) und einen Hilfsflag HasValue (Typ boolean) besteht, das anzeigt, ob der Wert des Typs Null ist. Wenn HasValue den Wert false besitzt, führt ein Zugriff auf Value zu einer Ausnahme.

Die generische Struktur zur Aufnahme beliebiger Wertetypen heißt System.Nullable. In C# existiert ein besonderes Sprachkontrukt (Anhängen eines Fragezeichens an den Typ bei der Deklaration), das die Schreibweise verkürzt.

C# (Langform)
---
System.Nullable<Int32> c = null;

C# (Kurzform)
---
int? c = null;

VB.NET
---
Dim c As New System.Nullable(Of Integer)
c = Nothing

VB.NET (Kurzform)
---
Dim c? As Integer = Nothing