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.