Tipos anuláveis (Guia de Programação em C#)
Os tipos anuláveis são instâncias de estrutura de Nullable . Um tipo anulável pode representar o intervalo de valores correto para seu tipo de valor subjacente, mais um valor adicional de null . Por exemplo, Nullable<Int32>, pronunciado “anulável de Int32”, pode ser atribuído qualquer valor de -2147483648 a 2147483647, ou pode ser atribuído o valor de null . Nullable<bool> pode ser atribuído os valores truefalse, ou nulo. A capacidade de atribuir null para tipos numéricos e booleanas é especialmente útil quando você está tratando os bancos de dados e outros tipos de dados que contêm elementos que não podem ser atribuído um valor. Por exemplo, um campo booleano em um banco de dados pode armazenar os valores true ou false, ou pode ser indefinido.
class NullableExample
{
static void Main()
{
int? num = null;
// Is the HasValue property true?
if (num.HasValue)
{
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.
Para obter mais exemplos, consulte Usando tipos anuláveis (Guia de Programação em C#)
Visão geral sobre anulável de tipos
Os tipos anuláveis têm as seguintes características:
Os tipos anuláveis representam as variáveis do tipo de valor que podem ser atribuídos o valor de null. Você não pode criar um tipo anulável com base em um tipo de referência. (Tipos de referência já têm suporte para o valor de null .)
A sintaxe T? é taquigrafia para Nullable, onde T é um tipo de valor. As duas formas intercambiáveis são.
Atribua um valor para um tipo anulável exatamente como você faria para um tipo de valor comum, por exemplo int? x = 10;oudouble? d = 4.108. Um tipo anulável também pode ser atribuído o valor null:int? x = null.
use o método de Nullable.GetValueOrDefault para retornar o valor atribuído, ou o valor padrão para o tipo subjacente se o valor é null, por exemploint j = x.GetValueOrDefault();
Use HasValue e propriedades somente leitura de Value para testar o zero e recuperar o valor, conforme mostrado no exemplo o seguir: if(x.HasValue) j = x.Value;
A propriedade de HasValue retorna true se a variável contém um valor, ou false se é null.
A propriedade de Value retorna um valor se ele é atribuído. Caso contrário, um InvalidOperationException é lançado.
o valor padrão para HasValue é false. A propriedade de Value não tem valor padrão.
Você também pode usar os operadores de == e de != com um tipo anulável, conforme mostrado no exemplo o seguir: if (x != null) y = x;
Use o operador de ?? para atribuir um valor padrão que é 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;aplicado
Os tipos anuláveis aninhados não são permitidos. A seguinte linha não será compilado: Nullable<Nullable<int>> n;
Seções relacionadas
para mais informações:
Especificação da linguagem C#
Para obter mais informações, consulte a Especificação da linguagem C#. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.