Nullable Types é um recurso do C# que nos permite atribuir o valor null a um tipo de dado que, por padrão, não aceita valores nulos: os tipos primitivos.
Esse recurso é útil quando precisamos realizar operações em banco de dados e desejamos armazenar um valor nulo em um campo que, posteriormente, receberá um valor de tipo primitivo, como int, float, bool, etc.
Saiba mais: Curso de Introdução ao C#
Tópicos
- Utilizando nullable types
- Exemplo prático
Utilizando nullable types
Para fazer a conversão de um tipo em um Nullable Type, basta adicionarmos um ponto de interrogação (?) logo após a declaração do tipo.
int? x = null;
Com esse código, atribuímos o valor null à variável x, de tipo int. Para verificarmos se a variável x recebeu algum valor, podemos utilizar uma estrutura condicional que testa se o seu valor é diferente de null, conforme o código abaixo:
if (x != null)
{
// x possui um valor inteiro
}
else
{
// x possui um valor nulo
}
Ou podemos simplificar esse código com o uso de um operador ternário:
Console.WriteLine("O valor de x é " + ((x != null) ? "um inteiro" : "nulo"));
Exemplo prático
Para demonstrar esse recurso na prática, criamos uma tabela Clientes com as colunas IdCliente, Nome e NumeroConta. Neste exemplo, suponha que a coluna NumeroConta permite a atribuição de valores nulos para que eles sejam preenchidos posteriormente.
No código abaixo, criamos uma variável do tipo string e uma do tipo int?, que recebe null e, logo após, solicitamos a inserção desses dados no banco:
string nome = "João";
int? numeroConta = null;
ClienteRepositorio repositorio = new ClienteRepositorio();
repositorio.Inserir(nome, numeroConta);
Após a execução, teríamos uma tabela conforme a Figura 1, com a coluna NumeroConta com o valor null:
Nota: Para gravação no banco de dados é necessário que o Nullable Type seja tratado na classe de persistência. Caso ele tenha valor nulo, será convertido para o tipo nulo do banco de dados em uso.