Recentemente ho scoperto, grazie ad uno sviluppatore conosciuto da poco, l’esistenza dei tipi nullable.
Introdotti a partire dal framework .net 2.0, consentono di assegnare ad una variabile il valore null, oltre il normale range di valori.
Nel caso di una variabile int, oltre il range di valori compreso tra -2147483648 e 2147483647, sarà possibile assegnare anche il valore null.
Ancora: nel caso in cui dovessimo definire una variabile di tipo bool, oltre ai due stati true e false, sarà possibile lavorare su un terzo stato, lo stato null.
Questa tipologia di dato torna utile soprattutto nel caso in cui dovessimo trovarci a testare il valore di una variabile cui associamo un dato estratto da un database. In condizioni normali, dovremmo usare il seguente costrutto:
1 2 3 4 | if (valore == null) x = -1; else x = valore; |
i tipi nullable possiedono due proprietà pubbliche e read-only: hasValue e Value.
* HasValue – restituisce true nel caso la variabile abbia un valore diverso da null
* Value – restituisce il valore assegnato alla variabile nel caso sia diverso da null, oppure un’eccezione InvalidOperationException;
Per cui, potremmo pensare di testare il valore estratto da un database nel seguente modo:
1 2 3 4 5 | int? x = campo_db; if (x.HasValue) System.Console.WriteLine(x.Value); else System.Console.WriteLine("Undefined"); |
(via msdn.microsoft.com)


















July 9th, 2009 at 5:21 pm
[...] passato ho anche affrontato la teoria relativa ai tipi nullable, che ricordo essere dei tipi che accettano il valore [...]
May 11th, 2010 at 4:56 pm
[...] l’obbligatorietà del parametro int bar. Questo comportamento nasce dall’assenza dei tipi nullable (int?, bool?) nei framework dotnet [...]