Compartilhar via


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

Operadores em C#

Tipos anuláveis (Guia de Programação em C#)

Conceitos

Guia de Programação em C#

Outros recursos

Referência de C#

O que exatamente "levantado" significa? “