Curiosidades C# – O operador de coalescência nula ??

O operador de coalescência nula ?? retornará o valor do operando esquerdo caso este não for null; caso contrário, ele avaliará o operando direito e retornará seu resultado.

O próximo aspecto a ter em conta é que qualquer variável que possa ter um valor nulo pode fazer uso do operador ??.

NOTA: O operador ?? não avaliará o operando do lado direito se o operando esquerdo for avaliado como não nulo.

Para este exemplo, suponha que você deseja atribuir uma string a uma variável e verificar se o resultado desse retorno é nulo. Se for nulo, então devemos atribuir uma outra string.

using System;

namespace NullCoalescingOperator
{
    class Program
    {
        static void Main(string[] args)
        {
            var sampleControl = new SampleControl();

            var myStringTest01 = sampleControl.GetNotNullResult() ?? "RIGHT OPERANT";
            var myStringTest02 = sampleControl.GetNullResult() ?? "RIGHT OPERANT2";

            Console.WriteLine(myStringTest01);
            Console.WriteLine(myStringTest02);
        }
    }

    public class SampleControl
    {
        public string GetNotNullResult()
        {
            return "NOT NULL RESULT";
        }

        public string GetNullResult()
        {
            return null;
        }
    }
}
//This will print
//NOT NULL RESULT
//RIGHT OPERANT2

Vantagem

A vantagem de usar o ?? operador é que ele fornece uma versão mais compacta de uma condição if/else tradicional.

Novidades

A partir do C#8, você pode usar o ??= operador para substituir o código do formulário

if (variable is null)
{
    variable = expression;
}

pelo código a seguir:

variable ??= expression;

Qualquer dúvida ou dicas, entre em contato: leandrolt@gmail.com

Principais referências

– https://docs.microsoft.com/pt-br/dotnet/csharp/language-reference/operators/null-coalescing-operator
– Livro: Pro C# 7: With .NET and .NET Core – Andrew Troelsen

Leave a Reply

Your email address will not be published. Required fields are marked *