Nulos

Em alguns casos precisamos trabalhar com tipos nulos, mas por padrão nem todos os tipos de variáveis aceitam, porem em c# é muito simples criarmos variáveis que possam assumir valores nulos.

Nullable Qualquer tipo pode passar a ser nullable , por exemplo uma variável do tipo int por padrão não pode receber null, para resolver isso basta adicionar o operador ? logo depois do tipo desejado. Declararmos da seguinte forma:

int? numero;
numero = null;

//ou

Nullable numero2;
numero2 = null;

Com isso criamos uma variável do tipo int nullable.

Utilizo bastante variáveis nullables por exemplo quando quero passar um parametro bool? ativo em uma funçao onde quando o valor for True trarei todos os registros ativos, False todos os Inativos e Null para trazer todos os ativos e inativos.

Operador ?? O operador ?? apesar de pouco conhecido é muito útil, com ele podemos verificar de forma rápida e elegante se uma variável possui valor nulo;

Exemplo:

int? numero = null;
int numero2 = numero??99;

string mensagem = null;
string mensagem2 = mensagem??"Mensagem Nula";

Com isso caso o valor da variável que antecede o operador ?? for nulo, será atribuido o valor que está posterior ao operador ??, caso contrario será atribuido o valor da variável em questão.

Ele trabalha de forma bem parecida a um if ternário:

int? numero = null;
int numero2 = numero == null ? 99 : numero;

Esse operador pode ser muito útil por exemplo em Getters para evitar retorno de um objeto não instanciado:

private IList empresas;
public IList Empresas
{
    get { return empresas = empresas ?? new List(); }
    set { empresas = value; }
}

Ou quando precisamos reistanciar algum objeto caso esteja nulo.

repositorio = repositorio ?? new Repositorio();
//Somente será reinstanciada caso sejá nulo.

Até a próxima.

[]s