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)

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

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 per i valori null se è possibile assegnare un valore o può 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 mediante il ? notazione dopo il tipo di valore. Ad esempio, int? in c# o Integer? in Visual Basic viene dichiarato un tipo di valore integer che può essere assegnato null.

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

Il Nullable classe fornisce supporto aggiuntivo per il Nullable<T> struttura. La Nullable classe supporta il recupero del tipo sottostante di un tipo nullable e operazioni di confronto e uguaglianza alle coppie di tipi nullable il cui tipo sottostante di tipo di valore non supporta le operazioni di uguaglianza e confronto 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 accessibile con la Value proprietà. Se il HasValue proprietà è false, il valore dell'oggetto è definito un tentativo di accesso e la Value proprietà genera un InvalidOperationException.

Quando un tipo nullable è boxed, common language runtime boxing automaticamente il valore sottostante del Nullable<T> oggetto, non il Nullable<T> oggetto stesso. Vale a dire, se il HasValue proprietà è 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 di un'operazione di conversione boxing è null. Di conseguenza, se un tipo nullable boxed viene passato a un metodo che prevede un argomento di 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 il 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 sono nullable e due colonne che ammettono valori null.

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();       
      }
    }
}
// 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: