?:, 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 tout d'abord une instruction if et ensuite un opérateur conditionnel pour vérifier une erreur potentielle de division par zéro avant de calculer la fonction sin.

if(x != 0.0) s = Math.Sin(x)/x; else s = 1.0;
s = x != 0.0 ? Math.Sin(x)/x : 1.0;

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

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#