Nullable Types em C#

Nesta documentação você aprenderá o que é e como utilizar Nullable Types, recurso da linguagem C# para manipulação de valores nulos em tipos não anuláveis.

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.

Tópicos

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 }
Run

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:

Figura 1. Coluna NumeroConta

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.

Artigos relacionados