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

Struttura Nullable<T>

Rappresenta un tipo di valore a cui può essere assegnato null.

Spazio dei nomi:  System
Assembly:  mscorlib (in mscorlib.dll)

[SerializableAttribute]
public struct Nullable<T>
where T : struct

Parametri di tipo

T

Tipo di valore sottostante del tipo generico Nullable<T>.

Il tipo Nullable<T> espone i seguenti membri.

  NomeDescrizione
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreNullable<T>Inizializza una nuova istanza della struttura Nullable<T> sul valore specificato.
In alto

  NomeDescrizione
Proprietà pubblicaSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreHasValueOttiene un valore che indica se l'oggetto Nullable<T> corrente presenta un valore valido per il proprio tipo sottostante.
Proprietà pubblicaSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreValueOttiene il valore dell'oggetto corrente Nullable<T> se allo stesso oggetto è stato assegnato un valore sottostante valido.
In alto

  NomeDescrizione
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreEqualsIndica se l'oggetto Nullable<T> corrente è uguale a un oggetto specificato. (Esegue l'override di ValueType.Equals(Object)).
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetHashCodeRecupera il codice hash dell'oggetto restituito dalla proprietà Value. (Esegue l'override di ValueType.GetHashCode()).
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetType Ottiene il Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetValueOrDefault()Recupera il valore dell'oggetto Nullable<T> corrente o il valore predefinito dell'oggetto.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetValueOrDefault(T)Recupera il valore dell'oggetto Nullable<T> corrente o il valore predefinito specificato.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToStringRestituisce la rappresentazione testo del valore dell'oggetto Nullable<T> corrente. (Esegue l'override di ValueType.ToString()).
In alto

  NomeDescrizione
Operatore pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreExplicit(Nullable<T> to T)Restituisce il valore di un valore Nullable<T> specificato.
Operatore pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreImplicit(T to Nullable<T>)Crea un nuovo oggetto Nullable<T> inizializzato su un valore specificato.
In alto

Un tipo viene definito nullable se è possibile assegnare a esso un valore o null, che significa che il tipo non presenta alcun valore. Per impostazione predefinita, tutti i tipi di riferimento, come String, sono nullable, ma tutti i tipi di valore, come Int32, non lo sono.

In C# e in Visual Basic, si contrassegna un tipo di valore come nullable utilizzando la notazione ? dopo il tipo di valore. Ad esempio, int? in C# o Integer? in Visual Basic dichiara un tipo di valore intero che può essere assegnato a null.

La struttura Nullable<T> supporta l'utilizzo di un solo tipo di valore come tipo nullable poiché i tipi di riferimento sono nullable in base alla progettazione.

La classe Nullable fornisce supporto aggiuntivo per la struttura Nullable<T>. Grazie alla classe Nullable è possibile ottenere il tipo sottostante di un tipo nullable, nonché eseguire operazioni di confronto e uguaglianza su coppie di tipi nullable il cui valore sottostante non supporta operazioni generiche di confronto e uguaglianza.

Proprietà fondamentali

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

Boxing e unboxing

Quando si esegue il boxing di un tipo nullable, Common Language Runtime esegue automaticamente il boxing del valore sottostante dell'oggetto Nullable<T>, non dell'oggetto Nullable<T> stesso. Se pertanto la proprietà HasValue è impostata su true, il contenuto della proprietà Value viene sottoposto a boxing. Quando il valore sottostante di un tipo nullable viene sottoposto a unboxing, Common Language Runtime crea una nuova struttura Nullable<T> inizializzata in base al valore sottostante.

Se il valore della proprietà HasValue di un tipo nullable è false, il risultato di un'operazione di boxing sarà null. Di conseguenza, se un tipo nullable boxed viene passato a un metodo che prevede un argomento dell'oggetto, sarà necessario preparare tale metodo per gestire i casi in cui l'argomento è null. Quando null è unboxed in un tipo nullable, Common Language Runtime crea una nuova struttura Nullable<T> e inizializza la relativa proprietà HasValue su false.

.NET Framework 4.5.1 e componenti runtime di windows

A partire da .NET Framework 4.5.1, è possibile includere un tipo di Nullable<T> come membro di una struttura esportata in una libreria di WinMD. In precedenza, questo non è stato supportato.

Nell'esempio di codice riportato di seguito vengono definite tre righe di una tabella nel database di esempio Microsoft Pubs. La tabella contiene due colonne non nullable e due colonne nullable.


// This code example demonstrates the Nullable<T> class.
// The code example defines a database table in which two columns 
// are nullable. In the application, an array of rows is created 
// and initialized. The table rows could subsequently be 
// written to a database.

using System;

class Sample 
{
// Define the "titleAuthor" table of the Microsoft "pubs" database. 
    public struct titleAuthor 
    {
    // Author ID; format ###-##-####
    public string au_id;
    // Title ID; format AA####
    public string title_id;
    // Author ORD is nullable.
    public short? au_ord;
    // Royalty Percent is nullable.
    public int? royaltyper;
    }

    public static void Main() 
    {
// Declare and initialize the titleAuthor array.
    titleAuthor[] ta = new titleAuthor[3];
    ta[0].au_id = "712-32-1176";
    ta[0].title_id = "PS3333";
    ta[0].au_ord = 1;
    ta[0].royaltyper = 100;

    ta[1].au_id = "213-46-8915";
    ta[1].title_id = "BU1032";
    ta[1].au_ord = null;
    ta[1].royaltyper = null;

    ta[2].au_id = "672-71-3249";
    ta[2].title_id = "TC7777";
    ta[2].au_ord = null;
    ta[2].royaltyper = 40;

// Display the values of the titleAuthor array elements, and 
// display a legend.
    Display("Title Authors Table", ta);
    Console.WriteLine("Legend:");
    Console.WriteLine("An Author ORD of -1 means no value is defined.");
    Console.WriteLine("A Royalty % of 0 means no value is defined.");
    }

// Display the values of the titleAuthor array elements.
    public static void Display(string dspTitle, 
                               titleAuthor[] dspAllTitleAuthors)
    {
    Console.WriteLine("*** {0} ***", dspTitle);
    foreach (titleAuthor dspTA in dspAllTitleAuthors)
       {
       Console.WriteLine("Author ID ... {0}", dspTA.au_id);
       Console.WriteLine("Title ID .... {0}", dspTA.title_id);
       Console.WriteLine("Author ORD .. {0}", dspTA.au_ord ?? -1);
       Console.WriteLine("Royalty % ... {0}", dspTA.royaltyper ?? 0);
       Console.WriteLine();       
       }
    }
}

/*
This code example produces the following results:

*** Title Authors Table ***
Author ID ... 712-32-1176
Title ID .... PS3333
Author ORD .. 1
Royalty % ... 100

Author ID ... 213-46-8915
Title ID .... BU1032
Author ORD .. -1
Royalty % ... 0

Author ID ... 672-71-3249
Title ID .... TC7777
Author ORD .. -1
Royalty % ... 40

Legend:
An Author ORD of -1 means no value is defined.
A Royalty % of 0 means no value is defined.

*/


.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

.NET per applicazioni Windows Phone

Supportato in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

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