Back-End

11 abr, 2019

C# – Checando Null de uma forma mais elegante e concisa

Publicidade

Se você ainda usa uma estrutura if/then para verificar se um objeto é null, saiba que pode melhorar o seu código e ganhar tempo.

Em um passado cada vez mais distante, você tinha que usar uma estrutura if/then para verificar se um objeto era null usando um código parecido com este:

  if (valor != null)
  {
     valor.Trim().ToUpper();
     ...
  }

A partir da versão 6.0 da linguagem C# você está livre desse código.

A partir dessa versão podemos usar o símbolo “?”, conhecido como “null-conditional operator” ou elvis operator (para os íntimos) para verificar referências nulas.

Isso te livra das instruções condicionais e o seu código fica mais enxuto e fácil de entender e manter.

Veja como fica o código acima usando o elvis operador (?.):

     valor?.Trim().ToUpper();

Essa sintaxe determina se valor é nulo. Se assim for, os métodos Trim e ToUpper não serão invocados e você não lançará a famigerada exceção NullReferenceException.

Se valor não for nulo, os métodos Trim e ToUpper serão invocados.

O elvis operator (?.) também pode ser empregado para testar cada objeto para null quando o operador de ponto é usado para encadear uma série de acessos a membros de objetos:

     Pessoa?.Endereco?.Estado?.Trim().ToUpper();   

Neste caso, se qualquer um dos três primeiros objetos (Pessoa, Endereco ou Estado) forem nulos, o
operador ponto não é invocado para esse objeto nulo e a execução da expressão cessa.

Assim, esse operador nos permite acessar membros e elementos apenas quando o receptor não for null, caso contrário, retornará o resultado null.

Veja isso atuando nos exemplos abaixo:

    int? tamanho = pessoa?.Length;     // se pessoa for null retorna null

O código acima seria equivalente ao código abaixo usando a abordagem clássica:

    int? tamanho = (pessoa != null) ? (int?)pessoa.Length : null;

Bem melhor, não é mesmo?

Atualize-se e crie um código mais enxuto.