Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Struttura Nullable<T>

 

Data di pubblicazione: ottobre 2016

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

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

generic<typename T>
where T : value struct, gcnew()
[SerializableAttribute]
public value struct Nullable

Parametri tipo

T

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

NomeDescrizione
System_CAPS_pubmethodNullable<T>(T)

Inizializza una nuova istanza della struttura Nullable<'T> in base al valore specificato.

NomeDescrizione
System_CAPS_pubpropertyHasValue

Ottiene un valore che indica se l'oggetto Nullable<'T> corrente presenta un valore valido per il proprio tipo sottostante.

System_CAPS_pubpropertyValue

Ottiene il valore dell'oggetto corrente Nullable<'T> se allo stesso oggetto è stato assegnato un valore sottostante valido.

NomeDescrizione
System_CAPS_pubmethodEquals(Object^)

Indica se l'oggetto Nullable<'T> corrente è uguale a un oggetto specificato.(Esegue l'override di ValueType::Equals(Object^).)

System_CAPS_pubmethodGetHashCode()

Recupera il codice hash dell'oggetto restituito dalla proprietà Value.(Esegue l'override di ValueType::GetHashCode().)

System_CAPS_pubmethodGetType()

Ottiene l'oggetto Type dell'istanza corrente.(Ereditato da Object.)

System_CAPS_pubmethodGetValueOrDefault()

Recupera il valore dell'oggetto Nullable<'T> corrente o il valore predefinito dell'oggetto.

System_CAPS_pubmethodGetValueOrDefault(T)

Recupera il valore dell'oggetto Nullable<'T> corrente o il valore predefinito specificato.

System_CAPS_pubmethodToString()

Restituisce la rappresentazione testo del valore dell'oggetto Nullable<'T> corrente.(Esegue l'override di ValueType::ToString().)

NomeDescrizione
System_CAPS_puboperatorSystem_CAPS_staticExplicit(Nullable<T> to T)

Definisce una conversione esplicita di un valore Nullable<'T> in un numero complesso.

System_CAPS_puboperatorSystem_CAPS_staticImplicit(T to Nullable<T>)

Crea un nuovo oggetto Nullable<'T> inizializzato su un valore specificato.

Un tipo viene definito nullable se può essere assegnato un valore o possono essere assegnato null, ovvero il tipo non presenta alcun valore. Per impostazione predefinita, i tipi di riferimento, ad esempio String, sono nullable, ma tutti i valori di tipi, ad esempio Int32, non sono.

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

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

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

I due membri fondamentali del Nullable<'T> struttura sono il HasValue e Value proprietà. Se il HasValue proprietà per un Nullable<'T> oggetto true, il valore dell'oggetto sono accessibili con la Value proprietà. Se il HasValue proprietà è false, il valore dell'oggetto è definito un tentativo di accesso e il Value proprietà genera un InvalidOperationException.

Quando un tipo nullable è boxed, common language runtime caselle automaticamente il valore sottostante il Nullable<'T> dell'oggetto, non il Nullable<'T> oggetto stesso. Vale a dire, se il HasValue è true, il contenuto del Value proprietà è di tipo boxed. Quando il valore sottostante di un tipo nullable è unboxed, common language runtime crea un nuovo Nullable<'T> struttura inizializzata sul valore sottostante.

Se il HasValue proprietà di un tipo nullable è false, il risultato della conversione boxing è null. Di conseguenza, se un tipo nullable boxed viene passato a un metodo che prevede un argomento dell'oggetto, è necessario preparare tale metodo per gestire il caso in cui l'argomento è null. Quando null è unboxed in un tipo nullable, common language runtime crea un nuovo Nullable<'T> struttura e inizializza la HasValue proprietà false.

A partire da .NET Framework 4.5.1, è possibile includere un tipo Nullable<'T> come membro di una struttura esportata in una libreria WinMD. In precedenza, tale operazione non era supportata.

Esempio di codice seguente definisce tre righe di una tabella nel database di esempio Pubs Microsoft. La tabella contiene due colonne che non ammettono e due colonne che ammettono valori null.

using namespace System;

// Define the "titleAuthor" table of the Microsoft "pubs" database.
value struct titleAuthor
{
    public:
       // Author ID; format ###-##-####
       String^ au_id;
       // Title ID; format AA####
       String^ title_id;
       // Author ORD is nullable.
       Nullable<short> au_ord;
       // Royalty Percent is nullable.
       Nullable<int> royaltyper;

    // Display the values of the titleAuthor array elements.
    static void Display(String^ dspTitle,
                        array<titleAuthor>^ dspAllTitleAuthors)
    {
       Console::WriteLine("*** {0} ***", dspTitle);
       for each (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.HasValue ?
                             dspTA.au_ord.Value : -1);
          Console::WriteLine("Royalty % ... {0}", dspTA.royaltyper.HasValue ?
                             dspTA.royaltyper.Value : 0);
          Console::WriteLine();
       }
    }
};

void main()
{
    // Declare and initialize the titleAuthor array.
    array<titleAuthor>^ ta = gcnew array<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 = nullptr;
//    ta[1].royaltyper = nullptr;

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

   // Display the values of the array elements, and
   // display a legend.
    titleAuthor::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.");
}
// The example displays the following output:
//       *** 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.

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 2.0
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1

I membri statici pubblici ( Condiviso in Visual Basic) di questo tipo è thread safe. Non tutti i membri di istanza sono garantiti come thread safe.

Torna all'inizio
Mostra: