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.
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Javascript, Update Panel e gli eventi, il 17 luglio 2007 alle 00:38
- App_Offline.htm e la sua quasi inutilità, il 22 dicembre 2006 alle 16:22
- ATLAS è molto meglio di ASP.NET AJAX, il 28 ottobre 2006 alle 12:53
- DataBinding con ATLAS, il 3 ottobre 2006 alle 00:01
- Attributi e Validazione del querystrig, il 3 settembre 2006 alle 23:56
- Un elogio ai VirtualPathProvider, il 10 giugno 2006 alle 11:25