Partager via


?:, 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 est évaluée 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. Seule une des deux expressions peut être évaluée.

Soit le type de first_expression et second_expression doivent être identiques, soit une conversion implicite doit exister d'un type à un autre.

Vous pouvez exprimer des calculs qui pourraient sinon requérir une construction if-else plus concise en utilisant l'opérateur conditionnel. Par exemple, le code suivant utilise en premier lieu une instruction if, puis un opérateur conditionnel pour classifier un entier positif ou négatif.

int input = Convert.ToInt32(Console.ReadLine());
string classify;

// if-else construction.
if (input > 0)
    classify = "positive";
else
    classify = "negative";

// ?: conditional operator.
classify = (input > 0) ? "positive" : "negative";

L'opérateur conditionnel est associatif sur sa 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
*/

Voir aussi

Référence

Opérateurs C#

if-else (référence C#)

Concepts

Guide de programmation C#

Autres ressources

Référence C#