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;
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.
// cs_operator_conditional.cs
using System;
class MainClass
{
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));
}
}
0.993346653975306 0.998334166468282 1
Riferimenti
Operatori di C#if-else (Riferimenti per C#)