A linguagem C# permite que os tipos de dados primitivos possam também conter valor nulo.
Por exemplo, uma variável do tipo bool pode ter três valores: null, true ou false.
Para isso, utilizamos o operador (?) para declarar uma variável como nullable.
Quando declaramos um variável posfixada com o operador (?) tornamos essa variável como nullable,
ou seja, um variável que aceita valor atribuição de valor null.
Sintaxe
tipo_dado? nome_variavel; //null
tipo_dado? nome_variavel = valor;
Exemplo 1
using System;
public class Program
{
public static void Main()
{
bool? flag = null;
Console.WriteLine(flag);
flag = true;
Console.WriteLine(flag);
flag = false;
Console.WriteLine(flag);
}
}
Saída
True
False
Para manipular o valor de variável nullable mencionadas acima, utiilizamos as propriedades
HasValue e Value. A primeira verifica se um variável ou objeto possui valor e a
segunda recuperar da variável.
Sintaxe
nome_variavel.HasValue;
nome_variavel.Value
Exemplo 2
using System;
public class Program
{
public static void Main()
{
bool? variavel = null;
Console.WriteLine(variavel.HasValue);
variavel = true;
Console.WriteLine(variavel.Value);
}
}
Saída
False
True
O aperador (?) também pode ser utilizado com conjunto com outros tipos de dados mais complexos
como Objetos, não ficando restrito aos tipos primitivos bem como aplicado em atributos de classes
e parâmetros de métodos.
Outros operadores relacionados à nulidade podem ser vistos em
Operadores: Outros operadores.