NULL für Werttypen in C# 👍 👎

Oftmals stolpern Entwickler anderer Sprachen darüber, dass Werttypen (z.B. int, double oder bool) in C# null nicht direkt zugewiesen werden kann, was insbesondere bei der Arbeit mit Datenbanken schnell notwendig wird.

Es gibt jedoch mit Hilfe der Nullable-Struktur eine elegante Lösung hierfür. Dazu wird ganz einfach der gewünschte Werttyp als Typparameter von Nullable angegeben:
Werttyp ohne und mit "Nullable"
0102030405060708091011
  // Werttyp ohne "Nullable"bool isValid;
isValid = true; // "true" zuweisenisValid = null; // Fehler: "null" kann nicht zugewiesen werden!
// Werttyp mit "Nullable"Nullable<bool> isValid;

isValid = true; // "true" zuweisenisValid = null; // "null" zuweisen
Außer der Zuweisbarkeit von null fügt Nullable auch noch Funktionalität zu unserem Objekt hinzu, mit der wir prüfen können, ob ein Wert vorhanden (bzw. das Objekt null) ist:
Nullable-Funktionalität
010203040506
if(isValid.HasValue) {  /**   * "isValid.Value" enthält den Wert;   * dieser ist ohne Nullable deklariert.  **/}
Zusätzlich gibt es noch die Methode GetValueOrDefault(…), deren Nutzen selbsterklärend sein dürfte.

Meiner Meinung nach könnte man nun durchaus auf die Idee kommen, dass diese Schreibweise etwas umständlich ist, "nur" um null zuweisen zu dürfen. Das sah Microsoft offensichtlich ähnlich, weswegen es eine äußerst kompakte Alternative gibt, indem man dem entsprechenden Werttyp schlicht ein "?" anhängt:
Werttyp mit "Nullable" (Kurzschreibweise)
01020304
bool? isValid;
isValid = true; // "true" zuweisenisValid = null; // "null" zuweisen
Dies ist identisch zur oben beschriebenen "ausführlichen" Variante und stellt somit lediglich eine syntaktische Bequemlichkeit dar, die ich jedoch sehr gerne verwende und auch anderen empfehle, das so zu halten.

Weitere Informationen zu diesem Thema finden sich selbstverständlich im MSDN.


Projektverweise

Kategorien / Archiv  |  Übersicht RSS-Feed

Schlagworte

Suche