Operatore ?: (Riferimenti per C#)

Aggiornamento: novembre 2007

L'operatore condizionale (?:) restituisce uno tra due valori in base al valore di un'espressione booleana. L'operatore condizionale presenta il formato

condition ? first_expression : second_expression;

Note

Se la condizione è true, viene valutata la prima espressione che diventa il risultato; se è false, viene valutata la seconda espressione che diventa il risultato. Viene sempre valutata soltanto una delle due espressioni.

I calcoli che richiedono una costruzione if-else possono essere espressi più concisamente ed elegantemente con l'operatore condizionale. Per evitare, ad esempio, una divisione per zero nel calcolo della funzione sin, è possibile scrivere

if(x != 0.0) s = Math.Sin(x)/x; else s = 1.0;

oppure, utilizzando l'operatore condizionale,

s = x != 0.0 ? Math.Sin(x)/x : 1.0;

L'operatore condizionale si associa all'operando a destra. Pertanto, un'espressione dal seguente formato:

a ? b : c ? d : e

viene valutata come

a ? b : (c ? d : e)

not

(a ? b : c) ? d : e

Non è possibile eseguire l'overload dell'operatore condizionale.

Esempio

class ConditionalOp
{
    static double sinc(double x)
    {
        return x != 0.0 ? Math.Sin(x) / x : 1.0;
    }

    static void Main()
    {
        Console.WriteLine(sinc(0.2));
        Console.WriteLine(sinc(0.1));
        Console.WriteLine(sinc(0.0));
    }
}
/*
Output:
0.993346653975306
0.998334166468282
1
*/

Vedere anche

Concetti

Guida per programmatori C#

Riferimenti

Operatori di C#

if-else (Riferimenti per C#)

Altre risorse

Riferimenti per C#