Typy nullable to bardzo sympatyczne zwierzęta. Poza klasycznymi wartościami umożliwiają przypisanie zmiennym prostym niedozwolonej dla nich wartości null – zupełnie jak dla typów referencyjnych.
Do czego można tego użyć? Pierwsza moja styczność z nullable miała miejsce w zamierzchłych czasach studenckich praktyk. Używałam wtedy nullable do przechowywania wartości z pól w formatce (we współpracy z TryParse
). Niedawno natomiast zastosowałam nullable int w liście argumentów do metody – użytkownik ma możliwość pominięcia niektórych wartości (wstawienie -1 czy 0 nie rozwiązywało sprawy, gdyż były to również wartości znaczące).
Jak zachowują się takie nullable w prawdziwym życiu? Jak najprościej skonwertować je do typu prostego?
Proste demo – dzięki zastosowaniu default nie ma konieczności używania Parse ani TryParse:
var nullables = new List<int?> {null, -1, 0, 1}; foreach (var nullable in nullables) { var intable = nullable ?? default(int);//magiczna linia Console.WriteLine("{0} \t-> {1}", nullable, intable); }
Oraz wynik:
null -> 0
-1 -> -1
0 -> 0
1 -> 1