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
*/