?:, opérateur (Référence C#)
Mise à jour : novembre 2007
L'opérateur conditionnel (?:) retourne l'une de deux valeurs selon la valeur d'une expression booléenne. L'opérateur conditionnel prend la forme
condition ? first_expression : second_expression;
Notes
Si la condition est true, la première expression est évaluée et devient le résultat ; si false, la deuxième expression est évaluée et devient le résultat. Une seule des deux expressions peut être évaluée.
Les calculs qui pourraient nécessiter une construction if-else peuvent être exprimés de manière plus concise et élégante à l'aide de l'opérateur conditionnel. Par exemple, pour éviter une division par zéro dans le calcul de la fonction sin, vous pouvez écrire
if(x != 0.0) s = Math.Sin(x)/x; else s = 1.0;
ou, en utilisant l'opérateur conditionnel,
s = x != 0.0 ? Math.Sin(x)/x : 1.0;
L'opérateur conditionnel est associatif à droite. Ainsi, une expression de la forme
a ? b : c ? d : e
est évaluée comme
a ? b : (c ? d : e)
et non
(a ? b : c) ? d : e
L'opérateur conditionnel ne peut pas être surchargé.
Exemple
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
*/