Casino online











Mercato forex






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:
Dim [Nome] As Nullable(Of [Tipo value])
'Oppure
Dim [Nome] As New Nullable(Of [Tipo value]) 
I membri interessanti di Nullable sono:
  • 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
Un esempio:
Module Module1
    Sub Main()
        Dim ND As Nullable(Of Double)
        Dim NI As Nullable(Of Int32)

        'All'inizio, ND è Null, quindi questo codice viene 
        'sempre eseguito
        If Not ND.HasValue Then
            ND = 123.45
        End 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.