Null Coalescing Operators: Lidando com valores nulos em C#

Em C#, o tratamento de valores nulos é uma prática essencial para evitar erros no código, especialmente as temidas “NullReferenceException”. Para ajudar os desenvolvedores a escreverem um código mais limpo e menos propenso a erros, o C# introduziu os operadores de coalescência nula: “??” e “??=”.

O problema dos valores nulos

Antes de mergulharmos nos operadores, vamos entender o problema que eles resolvem. Em C#, referências nulas são permitidas e, muitas vezes, inevitáveis. Por exemplo, ao buscar dados de uma base de dados, é possível que alguns campos retornem como null. 

Se tentarmos acessar uma propriedade ou método de um objeto “null”, ocorrerá uma exceção de referência nula:

				
					string nome = null;
Console.WriteLine(nome.Length);

				
			

No exemplo acima, como “nome” é null, tentar acessar a propriedade “Length” resulta em uma exceção. Para evitar isso, os desenvolvedores frequentemente escrevem código adicional para verificar a nulidade antes de acessar membros ou métodos:

				
					if (nome != null)
{
    Console.WriteLine(nome.Length);
}
else
{
    Console.WriteLine("Nome está nulo.");
}

				
			

Embora este código evite a exceção, ele pode rapidamente se tornar repetitivo.

Operadores de coalescência nula

Para simplificar o tratamento de valores nulos, o C# oferece dois operadores de coalescência nula: o operador “??” e o operador de atribuição de coalescência nula “??=”.

Operador de Coalescência Nula (??)

O operador “??” é usado para retornar o operando à esquerda se ele não for null; caso contrário, retorna o operando à direita. Ele é particularmente útil para fornecer valores padrão para variáveis que podem ser nulas.

Estrutura:

				
					var resultado = valorPossivelmenteNulo ?? valorPadrao;
				
			

Se “valorPossivelmenteNulo” for “null”, a variável “resultado” receberá “valorPadrao”. Caso contrário, “resultado” será igual a “valorPossivelmenteNulo”. Agora vamos ver um exemplo real:

				
					string nome = null;
Console.WriteLine(nome ?? "Nome não informado");
				
			

No exemplo acima, como “nome” é “null”, será impresso o valor “Nome não informado”.

Operador de Atribuição de Coalescência Nula (??=)

O operador “??=” é uma forma abreviada de atribuição condicional que só atribui um valor a uma variável se ela for null. Este operador é equivalente a:

				
					if (valorPossivelmenteNulo == null)
{
    valorPossivelmenteNulo = valorPadrao;
}
				
			

Vamos ver como implementá-lo:

				
					string nome = null;
nome ??= "Nome padrão";
Console.WriteLine(nome);
				
			

Aqui, como “nome” é inicialmente “nul”, o operador “??=” atribui “Nome padrão” à variavel  “nome”.

Comparação com outras técnicas

Antes do C# 8.0, o tratamento de valores nulos exigia verificações explícitas com “if” como citado anteriormente ou o uso de operadores ternários:

				
					var resultado = valorPossivelmenteNulo != null ? valorPossivelmenteNulo : valorPadrao;
				
			

Com os operadores de coalescência nula, o código é mais direto e menos propenso a erros.

Acelere a sua carreira conosco!

Se você é Desenvolvedor .NET Júnior e quer acelerar sua carreira até nível Pleno com salário de R$7k+, ou mesmo busca a primeira vaga, conheça a Mentoria .NET StartClique aqui

Se é Desenvolvedor .NET Pleno ou Sênior e quer virar referência técnica em sua equipe e mercado, com salário de R$10k+, conheça a Mentoria .NET ExpertClique aqui

Conclusão

Os operadores de coalescência nula (?? e ??=) são ferramentas muito úteis no C# para lidar com valores nulos de maneira eficiente e elegante. Eles ajudam a reduzir a complexidade do código e a evitar exceções comuns, tornando o código mais robusto e fácil de manter. Aproveite esses operadores para escrever código mais limpo, legível e seguro contra erros de nulidade!