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:
Usando Nullable Types (guia de programação translation from VPE for Csharp)
Conversão boxing Nullable Types (guia de programação translation from VPE for Csharp)
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