Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

Utilizzo dei tipi di dati nullable in C#

Articolo scritto da Vincenzo Gaglio
Pagina 1 di 3

Il termine null è un interessante concetto nel mondo della programmazione e non è sinonimo di 'zero' o 'vuoto', ma piuttosto di 'dato non definito'. Si parla di nullabilità (nullability) per riferirsi alla capacità di un tipo dati di accettare e gestire valori null.

Ogni programmatore spesso durante lo sviluppo delle proprie applicazioni si trova ad avere a che fare con i cosiddetti tipi di dati valore (value types) come int, double, bool, char e datetime. Questi tipi di dati sono fondamentali ma hanno una caratteristica un pò scomoda in certi casi, ossia non possono avere valore null.

(L'articolo continua più sotto...)

Fortunatamente C# ed il .NET Framework ci forniscono uno strumento molto utile: i tipi di dati nullable. Questi tipi di dati possono essere utilizzati in ogni punto del codice in cui vi è la necessità di avere una variabile che possa avere dei valori ma che possa anche avere valore null.

Se nel codice di una nostra applicazione scriviamo qualcosa del genere

bool boolTest = null;
datetime dataTest = null;
otterremo errori in fase di compilazione. Tuttavia spesso si presenta l'esigenza di settare un numero, una variabile booleana o una data ad avere valore null ed in questi casi vengono in nostro soccorso i tipi di dati nullable. Per rendere un tipo di dato nullable in C# tutto quello che occorre fare è porre un punto interrogativo (?) alla fine di ogni tipo di dato valore.

Pertanto se riscriviamo le due variabili precedenti nel seguente modo non avremo più errori in fase di compilazione

bool? boolTest = null;
datetime? dataTest = null;

Ogni variabile di tipo nullable espone una proprietà denominata Value, che permette di ottenere o impostare il valore della stessa. Un'altra utile proprietà di questi tipi di dati è HasValue, che restituisce il valore booleano true se la variabile in questione ha un valore non nullo, false altrimenti.

E' sempre possibile convertire un value type in un nullable type

bool dato1 = true;
bool? dato2 = dato1
ma attenzione che per effettuare la conversione inversa è necessario effettuare il cast del tipo nullable
dato1 = (bool)dato2;

Quando si pone il punto interrogativo a seguire un tipo di dato valore, come int? o decimal?, il compilatore fondamentalmente lo traduce nello struct Nullable<int> o Nullable<decimal>.
Per verificare questa cosa basta aggiungere ad un nostro codice di esempio una variabile Nullable<Datetime> e mettere un breakpoint in sua corrispondenza. Eseguendo il codice ed osservando la finestra Watch visualizzeremo come tipo di dato System.Datetime?.

Corsi
Corso ASP.NETCorso ASP.NET
Corso completo per la creazione di applicazioni Web. A partire da 49 €.
Corso VB.NETCorso VB.NET
Realizzare applicazioni Desktop con Visual Basic .NET. A partire da 49 €.
Vedi anche...
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122