Utilizando Tipos Nulos em c# (Nullable Types)
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:
1 2 3 4 5 6 7 | int? numero; numero = null; //ou Nullable<int> 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:
1 2 3 4 5 | 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:
1 2 | 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:
1 2 3 4 5 6 | private IList<Empresa> empresas; public IList<Empresa> Empresas { get { return empresas = empresas ?? new List<Empresa>(); } set { empresas = value; } } |
Ou quando precisamos reistanciar algum objeto caso esteja nulo.
1 2 | repositorio = repositorio ?? new Repositorio(); //Somente será reinstanciada caso sejá nulo. |
Até a próxima.
[]s