Approfondimento sui Nullable Types

di Stefano Mostarda, in .Net 2.0,

Devo ammetterlo, i Nullable Types mi piacciono molto. Reflector alla mano, sono andato alla scoperta di come questi vengono implementati.
In realta si tratta di un elegante "workaround". Non potendo un tipo per valore essere null, un Nullable Type non è altro che una struct che fa da wrapper per il tipo. Questo viene definito a Design-Time grazie ai Generics.
La struct ha 2 proprietà, la prima è Value che contiene il valore, la seconda è HasValue che indica se il valore è presente o meno. Quando si assegna il valore null, la proprietà Value viene settata al valore di default del tipo (0 per int, stringa vuota per le string, ecc.) e la proprietà HasValue a false, in caso di assegnazione di un valore corretto Value ha il valore e HasValue è true. Nel getter del Value se il valore di HasValue è false viene generata un'eccezione simulando così il valore null.

Questo meccanismo può essere implementato anche per la versione attuale del Framework, ma bisogna creare una classe per ogni tipo, mentre per la versione futura, grazie ai Generics questo non è stato necessario.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese