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#.