Condividi tramite


Struttura System.Nullable<T>

Annotazioni

Questo articolo fornisce osservazioni supplementari alla documentazione di riferimento per questa API.

La Nullable classe rappresenta un tipo di valore a cui è possibile assegnare null.

Un tipo è detto annullabile se può essere assegnato un valore o può essere assegnato null, il che significa che il tipo non ha alcun valore. Per impostazione predefinita, tutti i tipi di riferimento, ad esempio String, sono annullabili, ma tutti i tipi di valore, ad esempio Int32, non lo sono.

In C# e Visual Basic si contrassegna un tipo di valore come nullable usando la ? notazione dopo il tipo di valore. Ad esempio, int? in C# o Integer? in Visual Basic dichiara un tipo di valore intero a cui è possibile assegnare null.

La Nullable<T> struttura supporta l'uso solo di un tipo di valore come tipo nullable perché i tipi di riferimento sono nullable per progettazione.

La Nullable classe fornisce supporto complementare per la Nullable<T> struttura. La Nullable classe supporta l'acquisizione del tipo sottostante di un tipo nullable e le operazioni di confronto e uguaglianza su coppie di tipi nullable il cui tipo di valore sottostante non supporta operazioni di confronto ed uguaglianza generiche.

Proprietà fondamentali

I due membri fondamentali della Nullable<T> struttura sono le HasValue proprietà e Value . Se la HasValue proprietà per un Nullable<T> oggetto è true, è possibile accedere al valore dell'oggetto con la Value proprietà . Se la HasValue proprietà è false, il valore dell'oggetto non è definito e un tentativo di accesso alla Value proprietà genera un'eccezione InvalidOperationException.

Boxing e unboxing

Quando un tipo nullable viene sottoposto a boxing, il Common Language Runtime mette automaticamente in box il valore sottostante dell'oggetto Nullable<T>, non l'oggetto Nullable<T> stesso. Ovvero, se la HasValue proprietà è true, i contenuti della Value proprietà vengono sottoposti a boxing. Quando il valore sottostante di un tipo nullable è deconfezionato, il Common Language Runtime crea una nuova Nullable<T> struttura inizializzata al valore sottostante.

Se la HasValue proprietà di un tipo nullable è false, il risultato di un'operazione di boxing è null. Di conseguenza, se un tipo annullabile inscatolato viene passato a un metodo che si aspetta un argomento di tipo oggetto, tale metodo deve essere preparato per gestire il caso in cui l'argomento è null. Quando null è decompresso in un tipo annullabile, Common Language Runtime crea una nuova struttura Nullable<T> e inizializza la sua proprietà HasValue a false.

Componenti di Windows Runtime

È possibile includere un Nullable<T> tipo come membro di una struttura esportata in una libreria WinMD.