Nullable Types (C# Programming Guide)

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

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 de tipos anuláveis

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

  • Tipos anuláveis representam variáveis do tipo de valor que podem ser atribuídas o valor de null. É possível criar um tipo anulável baseado em um tipo de referência. (Referência tipos já oferecem suporte a null valor.)

  • A sintaxe T? é a abreviação de Nullable<T>, onde T é um tipo de valor. As duas formas são intercambiáveis.

  • Atribuir um valor para um tipo anulável como faria para um tipo de valor comum, por exemplo int? x = 10; ou double? d = 4.108. Um tipo anulável também pode ser atribuído o valor null: int? x = null.

  • 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 o null e recuperar o valor, conforme mostrado no exemplo a seguir: if(x.HasValue) j = x.Value;

    • O HasValue retorna a propriedade true se a variável contém um valor, ou false se ele for null.

    • O Value propriedade retorna um valor, se um for atribuído. Caso contrário, um System.InvalidOperationException é lançada.

    • O valor padrão para HasValue é false. O Value a propriedade tem nenhum valor padrão.

    • Você também pode usar o == e != operadores com um tipo anulável, conforme mostrado no exemplo a seguir: if (x != null) y = x;

  • Use o ?? o operador para atribuir um valor padrão que será aplicado quando um tipo anulável cujo valor atual é null é 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 C# Language Specification A especificação de linguagem é a fonte definitiva para a sintaxe e o uso de C#.

Consulte também

Referência

Nullable

Conceitos

C# Programming Guide

Outros recursos

Visual C#

C# Reference

O que faz exatamente 'levantada' Isso significa?