Questa pagina è stata utile?
I suggerimenti relativi al contenuto di questa pagina sono importanti. Comunicaceli.
Altri suggerimenti?
1500 caratteri rimanenti
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(Of T)

Rappresenta un tipo di valore a cui può essere assegnato riferimento null (Nothing in Visual Basic).

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

'Dichiarazione
<SerializableAttribute> _
Public Structure Nullable(Of T As Structure)

Parametri di tipo

T

Il tipo di valore sottostante del tipo generico Nullable(Of T).

Il tipo Nullable(Of T) espone i seguenti membri.

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

  NomeDescrizione
Proprietà pubblicaSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreHasValue Ottiene un valore che indica se l'oggetto Nullable(Of T) corrente ha un valore.
Proprietà pubblicaSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreValue Ottiene il valore dell'oggetto corrente Nullable(Of T).
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 StoreGetValueOrDefaultRecupera 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 StoreToString Restituisce la rappresentazione in forma di testo del valore dell'oggetto Nullable(Of 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 StoreNarrowing(Nullable(Of 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 StoreWidening(T to Nullable(Of T)) Crea un nuovo oggetto Nullable(Of T) inizializzato ad un valore specificato.
In alto

Un tipo viene definito nullable se è possibile assegnare a esso un valore o riferimento null (Nothing in Visual Basic), 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 a cui può essere assegnato Nothing.

La struttura Nullable(Of T) supporta l'utilizzo di un solo tipo di valore come tipo nullable poiché i tipi di riferimento sono nullable da 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(Of 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, il Common Language Runtime esegue automaticamente il boxing del valore sottostante dell'oggetto Nullable(Of T), non dell'oggetto Nullable(Of T) stesso. Se, pertanto, la proprietà HasValue ha valore true, il contenuto della proprietà Value viene sottoposto a boxing. Quando il valore sottostante di un tipo nullable viene sottoposto a unboxing, il Common Language Runtime crea una nuova struttura Nullable(Of 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à Nothing. Di conseguenza, se un tipo nullable boxed viene passato a un metodo che prevede un oggetto come argomento, sarà necessario preparare tale metodo per gestire i casi in cui l'argomento è Nothing. Quando Nothing è unboxed in un tipo nullable, il Common Language Runtime crea una nuova struttura Nullable(Of T) e inizializza la relativa proprietà HasValue a 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(Of 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.

Imports System

Class Sample
    ' Define the "titleAuthor" table of the Microsoft "pubs" database. 

    Public Structure titleAuthor
    ' Author ID; format ###-##-####
        Public au_id As String
    ' Title ID; format AA####
        Public title_id As String
    ' Author ORD is nullable.
        Public au_ord As Nullable(Of Short)
    ' Royalty Percent is nullable.
        Public royaltyper As Nullable(Of Integer)
    End Structure 'titleAuthor

    Public Shared Sub Main() 
    ' Declare and initialize the titleAuthor array.
        Dim ta(2) As titleAuthor
        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 = Nothing
        ta(1).royaltyper = Nothing

        ta(2).au_id = "672-71-3249"
        ta(2).title_id = "TC7777"
        ta(2).au_ord = Nothing
        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.")
    End Sub 'Main

    ' Display the values of the titleAuthor array elements.
    Public Shared Sub Display(ByVal dspTitle As String, _
                              ByVal dspAllTitleAuthors() As titleAuthor) 
        Console.WriteLine("*** {0} ***", dspTitle)
        Dim dspTA As titleAuthor
        For Each 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.GetValueOrDefault(-1))
            Console.WriteLine("Royalty % ... {0}", dspTA.royaltyper.GetValueOrDefault(0))
            Console.WriteLine()
        Next dspTA
    End Sub 'Display
End Class 'Sample

'
'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
Mostra:
© 2015 Microsoft