?:, opérateur (référence C#)
L'opérateur conditionnel (?:) retourne l'une de deux valeurs selon la valeur d'une expression booléenne.Voici la syntaxe de l'opérateur conditionnel.
condition ? first_expression : second_expression;
Notes
La condition doit évaluer entre true ou false.Si condition est true, first_expression est évaluée et devient le résultat.Si condition est false, second_expression est évaluée et devient le résultat.Une seule des deux expressions peut être évaluée.
Soit le type de first_expression et second_expression doivent être identiques ou une conversion implicite doit exister d'un type à un autre.
Vous pouvez exprimer des calculs qui pourraient autrement requérir une construction if-else plus concise en utilisant l'opérateur conditionnel.Par exemple, le code suivant utilise d'abord une instruction d' if puis un opérateur conditionnel pour classifier un entier comme positif ou négatif.
int input = Convert.ToInt32(Console.ReadLine());
string classify;
// if-else construction.
if (input < 0)
classify = "negative";
else
classify = "positive";
// ?: conditional operator.
classify = (input < 0) ? "negative" : "positive";
L'opérateur conditionnel est associatif à droite.L'expression a ? b : c ? d : e est évaluée comme a ? b : (c ? d : e), et non pas sous la forme (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
*/