A43. Tipi Nullable
I tipi Nullable sono un'applicazione dei generics alla programmazione dei database. Infatti, durante la scrittura di un applicativo
orientato alla gestione dei dati su database si incontra molto spesso il problema dei valori null, ossia valori che non esistono
poichè non sono stati impostati, nè dall'utente, nè dal programma. La soluzione adottata più spesso è il confronto di ogni cella con la
costante DBNull.Value, che rappresenta null. La seconda possibilità per ovviare a questo inconveniente consiste nell'usare i cosiddetti tipi
nullable, che sono in grado di assumere un valore null. Poichè i tipi reference possiedono già questa caratteristica, solo i value possono
essere dichiarati come nullable. Poichè Nullable è un tipo generic come gli altri, la sintassi è questa:
Il Framework .Net non implementa nessun tipo predefinito per l'utilizzo di questa branca della logica booleana, perciò è necessario costruire una nuova classe partendo da zero, specifica per i boolean e quindi senza generic.
I membri interessanti di Nullable sono:Dim [Nome]As Nullable(Of [Tipo value]) 'Oppure Dim [Nome]As New Nullable(Of [Tipo value])
- HasValue : proprietà che restituisce True se l'oggetto possiede un valore o False se è impostato su null
- Value : proprietà che restituisce il valore dell'oggetto, se esso possiede effettivamente un valore non null
- GetValueOrDefaut(V) : funzione che restituisce il valore dell'oggetto oppure, in mancanza di esso, il suo valore di default (0 per i tipi numerici). La versione in overload accetta un solo parametro, ossia il valore di default da restituire in caso l'oggetto contenga null
Module Module1Sub Main()Dim NDAs Nullable(Of Double )Dim NIAs Nullable(Of Int32) 'All'inizio, ND è Null, quindi questo codice viene 'sempre eseguito If Not ND.HasValueThen ND = 123.45End If 'NI diventa 0, ossia il valore di default quando c'è null NI = NI.GetValueOrDefault 'I tipi Nullable possono essere direttamente convertiti nei 'ripesttivi tipi generic collegati con l'operatore di cast CType 'oppure si può usare la proprietà Value Console.WriteLine(CDbl(ND) & " " & CInt(NI)) '> 123.45 0 Console.ReadKey()End Sub End Module
Logica booleana a tre valori
Il tipo Nullable(Of Boolean) genera un nuovo tipo di logica booleana, quella a tre valori, che comprende nel suo range d'azione anche null,
ossia un valore incognito, non specificato. Null viene trattato in modo piuttosto simile a false, come in questo schema:
| Valore 1 | Operatore | Valore 2 | Risultato |
| True | And | Null | Null |
| False | And | Null | False |
| True | Or | Null | True |
| False | Or | Null | Null |
| True | Xor | Null | Null |
| False | Xor | Null | Null |
Il Framework .Net non implementa nessun tipo predefinito per l'utilizzo di questa branca della logica booleana, perciò è necessario costruire una nuova classe partendo da zero, specifica per i boolean e quindi senza generic.
The Totem's Lair - Copyright (C) 2009
È vietata la riproduzione sia totale che parziale del sito.



