Tipos anuláveis (guia de programação C#)

Tipos anuláveis são instâncias do System.Nullable<T> struct. Um tipo que permite valor nulo pode representar o intervalo correto de valores para seu tipo de valor subjacente, mais um adicional null valor. Por exemplo, um Nullable<Int32>, pronunciado "Nullable de Int32", pode ser atribuído qualquer valor de -2147483648 a 2147483647, ou podem ser atribuído a null valor. A Nullable<bool> can be assigned the values truefalse, or null.A capacidade de atribuir null para tipos numéricos e booliano é especialmente útil quando você está lidando com bancos de dados e outros tipos de dados que contêm elementos que não é podem atribuir um valor. Por exemplo, um campo booliano em um banco de dados pode armazenar os valores de true ou false, ou pode ser indefinido.

class NullableExample
{
    static void Main()
    {
        int? num = null;
        if (num.HasValue == true)
        {
            System.Console.WriteLine("num = " + num.Value);
        }
        else
        {
            System.Console.WriteLine("num = Null");
        }

        // y is set to zero
        int y = num.GetValueOrDefault();

        // num.Value throws an InvalidOperationException if num.HasValue is false
        try
        {
            y = num.Value;
        }
        catch (System.InvalidOperationException e)
        {
            System.Console.WriteLine(e.Message);
        }
    }
}

O exemplo exibirá a saída:

num = Null

Nullable object must have a value.

Visão geral sobre tipos anuláveis

Tipos anuláveis têm as seguintes características:

  • Tipos anuláveis representam as variáveis do tipo de valor que podem ser atribuídas o valor de null. Não é possível criar um tipo que permite valor nulo com base em um tipo de referência.(Tipos de referência já suportam o null valor).

  • A sintaxe T? é a forma abreviada de Nullable<T>, onde T é um tipo de valor. Dois formulários são intercambiáveis.

  • Atribuir um valor para um tipo que permite valor nulo sistema autônomo faria para um tipo de valor comum, por exemplo, int? x = 10; or double? d = 4.108;

  • Use o Nullable<T>.GetValueOrDefault método para retornar o valor atribuído, ou o valor padrão para o tipo subjacente se o valor for null, por exemplo int j = x.GetValueOrDefault();

  • Use o HasValue e Value propriedades somente leitura para testar nulo e recuperar o valor, por exemplo if(x.HasValue) j = x.Value;

    • The HasValue propriedade retorna true se a variável contém um valor ou false se for nulo.

    • The Value propriedade retorna um valor se uma é atribuída. Caso contrário, um System.InvalidOperationException é lançada.

    • O valor padrão para uma variável de tipo que permite valor nulo define HasValue para false. The Value não está definida.

  • Use o ?? operador para atribuir um valor padrão que será aplicado quando um tipo que permite valor nulo cujo valor corrente é nulo é atribuído a um tipo não-nulo, por exemplo int? x = null; int y = x ?? -1;

  • Tipos anuláveis aninhados não são permitidos.A linha a seguir não serão compilados: Nullable<Nullable<int>> n;

Seções relacionadas

Para obter mais informações:

Especificação da linguagem C#

Para obter mais informações, consulte a seção a seguir no Especificação da linguagem C#:

  • 4.1.10 Tipos anuláveis

Consulte também

Tarefas

Exemplo anulável

Conceitos

Guia de Programação C#

Referência

Nullable

Outros recursos

Visual C#

Referência C#

O que exatamente 'ativada' significa?