Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale.
Traduzione
Originale

Tipi nullable (Guida per programmatori C#)

I tipi nullable sono istanze della struttura System.Nullable<T>. Un tipo nullable può rappresentare l'intervallo corretto di valori per il relativo tipo di valore sottostante, più un valore null aggiuntivo. Ad esempio, a un oggetto Nullable<Int32>, che si legge "Nullable di Int32", può essere assegnato un qualsiasi valore compreso tra -2147483648 e 2147483647 oppure il valore null. A un oggetto Nullable<bool> è possibile assegnare i valori true, false o null. La possibilità di assegnare null a tipi numerici e booleani è particolarmente utile quanto si utilizzano database e altri tipi di dati contenenti elementi a cui non sarebbe possibile assegnare un valore. Ad esempio, in un campo Boolean di un database è possibile archiviare il valore true o false oppure è possibile lasciarlo indefinito.


class NullableExample
{
    static void Main()
    {
        int? num = null;
        if (num.HasValue == true)
        {
            System.Console.WriteLine("num = " + num.Value);
        }
        else
        {
            System.Console.WriteLine("num = Null");
        }

        // y is set to zero
        int y = num.GetValueOrDefault();

        // num.Value throws an InvalidOperationException if num.HasValue is false
        try
        {
            y = num.Value;
        }
        catch (System.InvalidOperationException e)
        {
            System.Console.WriteLine(e.Message);
        }
    }
}


Nell'esempio viene visualizzato l'output:

num = Null

Nullable object must have a value.

Per ulteriori esempi, vedere Utilizzo dei tipi nullable (Guida per programmatori C#)

Di seguito sono riportate le caratteristiche dei tipi nullable:

  • I tipi nullable rappresentano variabili di tipo di valore a cui è possibile assegnare il valore di null. Non è possibile creare un tipo nullable basato su un tipo di riferimento. (I tipi di riferimento supportano già il valore null.)

  • La sintassi T? è una forma abbreviata dell'oggetto Nullable<T>, in cui l'oggetto T è un tipo di valore. Le due forme sono intercambiabili.

  • Assegnare un valore a un tipo nullable come se fosse un tipo di valore ordinario, ad esempio int? x = 10; o double? d = 4.108. È possibile inoltre assegnare un valore null: int? x = null. al tipo nullable.

  • Utilizzare il metodo Nullable<T>.GetValueOrDefault per restituire il valore assegnato o il valore predefinito per il tipo sottostante se il valore è null, ad esempio int j = x.GetValueOrDefault();

  • Utilizzare le proprietà di sola lettura HasValue e Value per controllare i valori Null e recuperare il valore, come illustrato nell'esempio seguente: if(x.HasValue) j = x.Value;

    • La proprietà HasValue restituisce true se la variabile contiene un valore o false se è null.

    • La proprietà Value restituisce un valore se ne è stato assegnato uno. In caso contrario, verrà generata un'eccezione System.InvalidOperationException.

    • Il valore predefinito di HasValue è false. La proprietà Value non ha valori predefiniti.

    • È anche possibile utilizzare gli operatori == e != con un tipo nullable, come illustrato nel seguente esempio: if (x != null) y = x;

  • Utilizzare l'operatore ?? per assegnare un valore predefinito che verrà applicato quando un tipo nullable, il cui valore corrente è null, viene assegnato a un tipo non nullable, ad esempio int? x = null; int y = x ?? -1;

  • I tipi nullable annidati non sono consentiti. La riga seguente non eseguirà la compilazione: Nullable<Nullable<int>> n;

Per ulteriori informazioni, vedere la Specifiche del linguaggio C#. La specifica del linguaggio è la fonte ufficiale per la sintassi e l'utilizzo di C#.

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft