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.