O operador ?? e tipos nullable em C#

O C# (2.0) tem uma funcionalidade bastante útil - o operador ??.

x = y ?? z;

O que faz? Basicamente, x = y, a não ser que y seja nulo, nesse caso, x = z.

Testa o operando à esquerda para ver se é nulo. Se for, devolve o operando à direita, se não for, devolve o operando à esquerda.

A expressão acima é equivalente a:

if (y != null)
{
    x = y;
}
else
{
    x = z;
}

Ou:

x = ((y != null) ? y : z);

O operador ?? faz com que este tipo de expressões seja muito mais fácil de ler e perceber e também de escrever.

É útil quando se trabalha com tipos de dados que podem ser nulos. Por exemplo:

int? y  = 42;
int x = y ?? 7;

y é um nullable int, o que significa que tanto pode guardar um valor inteiro como valor nulo. Neste exemplo, usamos o operador ?? para verificar se y tem valor nulo, atribuindo o valor 7 a x nesse caso ou o valor de y em caso contrário.

Podem ler um bom artigo sobre o operador ?? em C# no blog de ScottGu.

Artigos relacionados