?? Operatore (Riferimenti per C#)

L'operatore ?? è chiamato operatore null-coalescing e viene utilizzato per definire un valore predefinito per tipi valore nullable e tipi riferimento. Restituisce l'operando di sinistra se non null; in caso contrario, restituisce l'operando di destra.

Note

Un tipo nullable può contenere un valore o non essere definito. L'operatore ?? definisce il valore predefinito da restituire quando un tipo nullable viene assegnato a un tipo che non nullable. Se si tenta di assegnare un tipo valore nullable a un tipo non nullable senza utilizzare l'operatore ??, verrà generato un errore in fase di compilazione. Se si utilizza un cast e il tipo valore nullable non è attualmente definito, verrà generata un'eccezione InvalidOperationException.

Per ulteriori informazioni, vedere Tipi nullable (Guida per programmatori C#).

Il risultato di un operatore ?? non è considerato una costante anche se entrambi gli argomenti sono costanti.

Esempio

class NullCoalesce
{
    static int? GetNullableInt()
    {
        return null;
    }

    static string GetStringValue()
    {
        return null;
    }

    static void Main()
    {
        // ?? operator example.
        int? x = null;

        // y = x, unless x is null, in which case y = -1.
        int y = x ?? -1;

        // Assign i to return value of method, unless
        // return value is null, in which case assign
        // default value of int to i.
        int i = GetNullableInt() ?? default(int);

        string s = GetStringValue();
        // ?? also works with reference types. 
        // Display contents of s, unless s is null, 
        // in which case display "Unspecified".
        Console.WriteLine(s ?? "Unspecified");
    }
}

Vedere anche

Riferimenti

Operatori [C#]

Tipi nullable (Guida per programmatori C#)

Concetti

Guida per programmatori C#

Altre risorse

Riferimenti per C#

Cosa significa esattamente 'Sollevato'?