Operador ?? (Referência de C#)
O operador ?? é chamado operador de coalescência nula. Ele retornará o operando esquerdo se o operando não for nulo; caso contrário, ele retornará o operando direito.
Comentários
Um tipo anulável pode representar um valor de domínio do tipo ou o valor pode ser indefinido (nesse caso, o valor será nulo). Você pode usar a expressividade sintática do operador ?? para retornar um valor apropriado (o operando direito) quando o operando esquerdo possuir um tipo anulável cujo valor seja nulo. Se você tentar atribuir um tipo de valor anulável a um tipo de valor não anulável sem usar o operador ??, um erro de tempo de compilação será gerado. Se você usar uma conversão e o tipo de valor anulável estiver atualmente indefinido, uma exceção InvalidOperationException será acionada.
Para obter mais informações, consulte Tipos anuláveis (Guia de Programação em C#).
O resultado de um operador ?? não será considerado uma constante mesmo se ambos os seus argumentos forem constantes.
Exemplo
class NullCoalesce
{
static int? GetNullableInt()
{
return null;
}
static string GetStringValue()
{
return null;
}
static void Main()
{
int? x = null;
// Set y to the value of x if x is NOT null; otherwise,
// if x = null, set y to -1.
int y = x ?? -1;
// Assign i to return value of the method if the method's result
// is NOT null; otherwise, if the result is null, set i to the
// default value of int.
int i = GetNullableInt() ?? default(int);
string s = GetStringValue();
// Display the value of s if s is NOT null; otherwise,
// display the string "Unspecified".
Console.WriteLine(s ?? "Unspecified");
}
}
Consulte também
Referência
Tipos anuláveis (Guia de Programação em C#)