Feb
6

c#: tipi nullable (int? char? double? float?)

Postato in  
Technology

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.

* HasValuerestituisce true nel caso la variabile abbia un valore diverso da null
* Valuerestituisce 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");

Related Posts:

2 Commenti al post: “c#: tipi nullable (int? char? double? float?)”

  1. Francesco Biacca blog » Blog Archive » C# specifiche: gli operatori condizionali scrive:

    [...] passato ho anche affrontato la teoria relativa ai tipi nullable, che ricordo essere dei tipi che accettano il valore [...]

  2. Francesco Biacca blog » Blog Archive » C#: parametri ‘Specified’ nei servizi WCF scrive:

    [...] l’obbligatorietà del parametro int bar. Questo comportamento nasce dall’assenza dei tipi nullable (int?, bool?) nei framework dotnet [...]

Scrivi il tuo commento