Categories: C#

[c#] Qu’est ce que l’opérateur ternaire ou opérateur conditionnel ?

L’équivalent en php c’est ici :: Équivalent en PHP

En c#, l’opérateur ternaire est le signe « ? ». Celui-ci fait parti de l’expression conditionnelle (ou ternaire au choix, Conditional operator ou ternary operator pour ceux qui chercheraient des explications en Anglais sur Msdn).


L’expression conditionnelle permet d’écrire une boucle if / else sur une seule ligne.
Par contre, la syntaxe de cette condition rend la lisibilité du code beaucoup plus compliquée. Dans certain cas elle peut néanmoins la rendre plus ‘esthétique’. (Pour certain calcul ou pour générer des phrases par exemple).

Niveau optimisation, le temps d’exécution des deux conditions semblent être équivalent (en c#).

(condition) ? valVrai : valFaux;  

L’expression précédente est l’équivalent de la boucle if else suivante.

If( condition){
{ retourne valVrai ;}
Else
{retourne valFaux;}

Si condition est vrai alors on renvoie valVrai sinon on renvoie valFaux.

Le résultat de Condition doit être un booléen.
Val1 et val2 doivent être de même type.

Expression ternaire ou conditionnelle

Attention, l’opérateur conditionnel est associatif à droite.
Ainsi l’expression
a ? b : c ? d : e
sera comprise comme l’expression suivante :
a ? b : (c ? d : e)


Exemples
Expression conditionnelle

int moyenne = 13 ;
string resultat = (moyenne 

Équivalent avec des boucles if else

int moyenne = 13 ;
string resultat = (moyenne 

Expressions conditionnelles imbriquées

int moyenne = 13 ;
string resultat = (moyenne  15) ? « admis avec mention» : "admis";
//resultat = "admis"


Et si vous avez envie d'en savoir plus sur l'instruction 'Switch' je vous invite à lire : L'instruction Switch

(Dessin provenant du site Study : C Program: Find out the Largest Number by using Ternary Operator: )


Point d’intérêt de cet article : Ternaire, Csharp, Optimisation.

Mots clefs liés à cet article:

  • ternaire C#
  • opérateur ternaire c#
  • c# ternaire
  • c# operateur ternaire
  • if ternaire
  • condition ternaire c#
  • if ternaire c#
  • c# condition ternaire
  • operateur ternaire
  • operateur ternaire c
adminArnaud

View Comments

  • Bonjour,

    Je suis en train d’apprendre le C# et je ne trouve pas de solution a mon probleme.

    Je bloque sur l’opérateur ternaire !! :)
    Voici mon code :

    using System;

    namespace Essai_Ternaire
    {
    class Program
    {
    public static void Main(string[] args)
    {
    int valeurA = 10;
    int valeurB = 20;
    string ternaire = (valeurA == valeurB) ? Console.Write(« Les nombres sont égaux ») : Console.Write(« Les nombres sont différents »);
    }
    }
    }

    Pourquoi ‘les nombres sont différents’ ne s’affichent pas ?

    Je suis sous sharp develop,

    J’ai pour erreur :

    Citation : sharp develop

    Le type d’expression conditionnelle ne peut pas être déterminé, car il n’existe pas de conversion implicite entre ‘void’ et ‘void’ (CS0173)

    Merci de votre aide !

    • Bonjours Thomas,
      Ton problème ne vient pas du ternaire. En fait tu es entrain d’essayer de mettre le retour de ton Console.Write() dans un string.
      Ta fonction Console.write() retourne un void d’où le message d’erreur.
      Fait

      string ternaire = (valeurA == valeurB) ? « Les nombres sont égaux » : « Les nombres sont différents »;
      Console.Write(ternaire);

Share
Published by
adminArnaud

Recent Posts

[Agile] De l’importance d’écrire des taches claires pour vos User Stories

Dans le monde de l'agilité, le Product Owner se doit d'écrire des user stories simples,… Read More

4 ans ago

[Actu] Printemps des poètes

Parce que, contrairement à ce que l'on pourrait penser ce soir qu'il pleut des cordes,… Read More

5 ans ago

[Actu] Élections présidentielles 2017

Un peu d’humour en attendant le résultat des élections présidentielles françaises. Read More

7 ans ago

[Linux] Activer/Désactiver l’UTC en ligne de commande

Si vous n'avez pas accès à l'interface graphique de votre Linux, vous pouvez modifier l'horloge… Read More

8 ans ago

[Actu] Ces fous qui attaquent Paris

Si quelqu'un m'avait dit en Janvier que je réécrirais un article dans l'année sur des… Read More

8 ans ago

[Actu] Fin des vacances, c’est la rentrée 2015 !

Il y a quelques semaines, mois, voire années (tout est subjectif) nos enfants (et nos… Read More

9 ans ago