Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês
Esta documentação foi arquivada e não está sendo atualizada.

Estrutura Nullable<T>

Representa um objeto cujo tipo base é um tipo de valor que também pode ser atribuído null como um tipo de referência.

Namespace:  System
Assembly:  mscorlib (em mscorlib.dll)

[SerializableAttribute]
public struct Nullable<T>
where T : struct, new()

Parâmetros de tipo

T

O tipo de valor subjacente da Nullable<T> tipo genérico.

O tipo Nullable<T> expõe os membros a seguir.

  NomeDescrição
Método públicoCompatível com o XNA FrameworkNullable<T>Inicializa uma nova instância de Nullable<T> estrutura para o valor especificado.
Início

  NomeDescrição
Propriedade públicaCompatível com o XNA FrameworkHasValueObtém um valor indicando se o atual Nullable<T> o objeto tem um valor.
Propriedade públicaCompatível com o XNA FrameworkValueObtém o valor do atual Nullable<T> valor.
Início

  NomeDescrição
Método públicoCompatível com o XNA FrameworkEqualsIndica se o atual Nullable<T> objeto é igual a um objeto especificado. (Substitui ValueType.Equals(Object).)
Método protegidoCompatível com o XNA FrameworkFinalizePermite que um objeto tentar liberar recursos e executar outras operações de limpeza antes que ele é recuperado pela coleta de lixo. (Herdado de Object.)
Método públicoCompatível com o XNA FrameworkGetHashCodeRecupera o código de hash do objeto retornado pela Value propriedade. (Substitui ValueType.GetHashCode().)
Método públicoCompatível com o XNA FrameworkGetTypeObtém o Type da instância atual. (Herdado de Object.)
Método públicoCompatível com o XNA FrameworkGetValueOrDefault()Recupera o valor do atual Nullable<T> o objeto, ou o valor padrão. do objeto
Método públicoCompatível com o XNA FrameworkGetValueOrDefault(T)Recupera o valor do atual Nullable<T> o objeto, ou o valor padrão especificado.
Método protegidoCompatível com o XNA FrameworkMemberwiseCloneCria uma cópia superficial do atual Object. (Herdado de Object.)
Método públicoCompatível com o XNA FrameworkToStringRetorna a representação de texto do valor do atual Nullable<T> objeto. (Substitui ValueType.ToString().)
Início

  NomeDescrição
Operador públicoMembro estáticoCompatível com o XNA FrameworkExplicit(Nullable<T> to T)Retorna o valor de um especificado Nullable<T> valor.
Operador públicoMembro estáticoCompatível com o XNA FrameworkImplicit(T to Nullable<T>)Cria um novo Nullable<T> o objeto inicializado para um valor especificado.
Início

Um tipo é considerado anulável se ele pode ser atribuído um valor ou pode ser atribuído null, que significa o tipo não tem um valor que seja. Conseqüentemente, um tipo anulável pode expressar um valor ou que não existe nenhum valor. Por exemplo, uma tipo de referência, como String é anulável, enquanto um valor de tipo como Int32 é não. Um tipo de valor não pode ser anulável, pois ele tem capacidade suficiente para expressar apenas os valores apropriados para esse tipo; não tem a capacidade adicional necessária para expressar um valor nulo.

O Nullable<T> estrutura suporta usando apenas um tipo de valor como um tipo anulável, porque os tipos de referência são anuláveis por design.

O Nullable classe fornece suporte complementar para o Nullable<T> estrutura. O Nullable classe oferece suporte a obter o tipo subjacente de um tipo anulável e as operações de comparação e de igualdade em pares de tipos anuláveis, cujo tipo de valor subjacente não oferece suporte genérico de comparação e de igualdade operações.

Cenário

Use tipos nullable para representar as coisas que existem ou não dependendo da circunstância. Por exemplo, um atributo opcional de uma marca HTML pode existir em uma marca mas não um outro, ou uma coluna anulável de uma tabela de banco de dados pode existir em uma linha da tabela mas não um outro.

Você pode representar o atributo ou a coluna como um campo em uma classe e você pode definir o campo como um tipo de valor. O campo pode conter todos os valores válidos para o atributo ou uma coluna, mas não pode acomodar um valor adicional, significa que o atributo ou a coluna não existe. Nesse caso, defina o campo seja um tipo anulável em vez de um tipo de valor.

Propriedades fundamentais

Os dois membros fundamentais da Nullable<T> estrutura são o HasValue e Value Propriedades. Se a HasValue propriedade para um Nullable<T> o objeto é true, o valor do objeto pode ser acessado com o Value propriedade. Se o HasValue é de propriedade false, o valor do objeto está indefinido e uma tentativa de acessar o Value propriedade lança um InvalidOperationException.

Boxing e Unboxing

Quando um tipo anulável for in a box, o common language runtime caixas automaticamente o valor subjacente da Nullable<T> o objeto, não o Nullable<T> próprio objeto. Ou seja, se o HasValue é a propriedade true, o conteúdo da Value in a box propriedade. Quando o valor subjacente de um tipo anulável é desemoldurado, o common language runtime cria um novo Nullable<T> estrutura inicializada para o valor subjacente.

Se o HasValue é de propriedade de um tipo anulável false, o resultado de uma operação de conversão boxing é null. Conseqüentemente, se um tipo anulável in a box é passado para um método que espera um argumento de objeto, esse método deve ser preparado para manipular o caso em que o argumento é null. Quando null é desencaixotado em um tipo anulável, o common language runtime cria um novo Nullable<T> estrutura e inicializa sua HasValue propriedade para false.

O exemplo de código a seguir define três linhas de uma tabela no banco de dados de exemplo Pubs do Microsoft. A tabela contém duas colunas que não são anuláveis e duas colunas são anuláveis.


// 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

Com suporte em: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Windows 7, Windows Vista SP1 ou posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core não compatível), Windows Server 2008 R2 (Server Core não compatível com SP1 ou posterior), Windows Server 2003 SP2

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos de sistema do .NET Framework.

Quaisquer membros static (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.
Mostrar: