A partire dal .NET Framework 2.0 in C# è possibile assegnare ad una variabile value il valore null.
Grazie alla classe generica Nullable, infatti, è possibile creare una variabile come int o double ed assegnarli il valore null, cosa prima impossibile essendo questi tipi per valore e non per referenza.
Per creare una variabile di questo tipo si usa la seguente sintassi:
tipo? nome_var;
Come si può vedere l’unica differenza che si nota è il ? dopo il tipo.
Seguendo questa sintassi, infatti, è come se si crei un nuovo oggetto Nullable<tipo>, a cui quindi può essere assegnato il valore null.
Vediamo un esempio reale:
int? var = 5;
int? ovar = null;
Abbiamo dichiarato 2 variabili int assegnado ad una un normale valore (5) e all’altra null.
Ora si creerebbe un problema se andassimo a fare ad esempio:
int a = (int)(ovar + var);
Questo perché ovar non ha un valore, ma gli è stato assegnato null.
Si può risolvere la questione semplicemente controllando una proprietà di ovar, che ricordiamo è un oggetto Nullable<int>, quindi usiamo la proprietà HasValue, che ritorna true se alla variabile non è stato assegnato null, altrimenti torna false, quindi potremmo modificare il codice così:
int a = 0;
if (var.HasValue && ovar.HasValue)
a = (int)(var + ovar);


