C# Language
Expressions conditionnelles
Recherche…
Déclaration If-Else
La programmation en général nécessite souvent une decision
ou une branch
dans le code pour rendre compte de la manière dont le code fonctionne sous différentes entrées ou conditions. Dans le langage de programmation C # (et la plupart des langages de programmation en la matière), le moyen le plus simple et le plus utile de créer une branche dans votre programme est d'utiliser une instruction If-Else
.
Supposons que nous ayons une méthode (alias une fonction) qui prend un paramètre int qui représentera un score allant jusqu'à 100, et la méthode imprimera un message indiquant si nous réussissons ou non.
static void PrintPassOrFail(int score)
{
if (score >= 50) // If score is greater or equal to 50
{
Console.WriteLine("Pass!");
}
else // If score is not greater or equal to 50
{
Console.WriteLine("Fail!");
}
}
Lorsque vous examinez cette méthode, vous pouvez remarquer cette ligne de code ( score >= 50
) dans l'instruction If
. Cela peut être vu comme une condition boolean
, où si la condition est évaluée à égale à true
, le code qui se trouve entre le if
{ }
est exécuté.
Par exemple, si cette méthode a été appelée comme ceci: PrintPassOrFail(60);
, la sortie de la méthode serait une impression de console disant pass! la valeur du paramètre de 60 étant supérieure ou égale à 50.
Cependant, si la méthode a été appelée comme: PrintPassOrFail(30);
, la sortie de la méthode imprimera en disant Fail! . En effet, la valeur 30 n'est pas supérieure ou égale à 50, donc le code entre the else
{ }
est exécuté à la place de l'instruction If
.
Dans cet exemple, nous avons dit que le score devrait aller jusqu'à 100, ce qui n'a pas du tout été pris en compte. Pour prendre en compte le score qui ne dépasse pas 100, ou peut-être en dessous de 0, reportez-vous à l'exemple If-Else If-Else Statement .
Déclaration If-Else If-Else
Suite à l'exemple If-Else Statement , il est maintenant temps d'introduire l'instruction Else If
. L'instruction Else If
suit directement l'instruction If
dans la structure If-Else If-Else , mais possède intrinsèquement une syntaxe similaire à celle de l'instruction If
. Il est utilisé pour ajouter plus de branches au code que ce qu'une simple déclaration If-Else peut faire.
Dans l'exemple de la déclaration If-Else , l'exemple spécifiait que le score montait à 100; Cependant, il n'y a jamais eu de vérification contre cela. Pour résoudre ce problème, modifions la méthode de l' instruction If-Else pour qu'elle ressemble à ceci:
static void PrintPassOrFail(int score)
{
if (score > 100) // If score is greater than 100
{
Console.WriteLine("Error: score is greater than 100!");
}
else if (score < 0) // Else If score is less than 0
{
Console.WriteLine("Error: score is less than 0!");
}
else if (score >= 50) // Else if score is greater or equal to 50
{
Console.WriteLine("Pass!");
}
else // If none above, then score must be between 0 and 49
{
Console.WriteLine("Fail!");
}
}
Toutes ces instructions seront exécutées dans l'ordre, du début à la fin, jusqu'à ce qu'une condition soit remplie. Dans cette nouvelle mise à jour de la méthode, nous avons ajouté deux nouvelles branches pour tenir compte du dépassement des limites .
Par exemple, si nous appelons maintenant la méthode dans notre code comme PrintPassOFail(110);
, la sortie serait une impression de console disant Erreur: le score est supérieur à 100! ; et si nous avons appelé la méthode dans notre code comme PrintPassOrFail(-20);
, la sortie dirait Erreur: le score est inférieur à 0! .
Changer les déclarations
Une instruction switch permet de tester l’égalité d’une variable par rapport à une liste de valeurs. Chaque valeur est appelée un cas et la variable activée est vérifiée pour chaque cas de commutation.
Une instruction switch
est souvent plus concise et compréhensible que if...else if... else..
lors du test de plusieurs valeurs possibles pour une seule variable.
La syntaxe est la suivante
switch(expression) {
case constant-expression:
statement(s);
break;
case constant-expression:
statement(s);
break;
// you can have any number of case statements
default : // Optional
statement(s);
break;
}
il y a plusieurs choses à considérer lors de l'utilisation de l'instruction switch
- L'expression utilisée dans une instruction switch doit avoir un type intégral ou énuméré, ou être d'un type de classe dans lequel la classe a une fonction de conversion unique pour un type intégral ou énuméré.
- Vous pouvez avoir un nombre quelconque de déclarations de cas dans un commutateur. Chaque cas est suivi de la valeur à comparer et d'un deux-points. Les valeurs à comparer doivent être uniques dans chaque instruction de commutateur.
- Une instruction switch peut avoir un cas par défaut facultatif. Le cas par défaut peut être utilisé pour effectuer une tâche lorsque aucun des cas n'est vrai.
- Chaque cas doit se terminer par une déclaration de
break
, sauf s'il s'agit d'une instruction vide. Dans ce cas, l'exécution se poursuivra au cas par cas. L'instruction break peut également être omise lorsque vous utilisez unegoto case
return
,throw
ougoto case
.
Exemple peut être donné avec les notes sage
char grade = 'B';
switch (grade)
{
case 'A':
Console.WriteLine("Excellent!");
break;
case 'B':
case 'C':
Console.WriteLine("Well done");
break;
case 'D':
Console.WriteLine("You passed");
break;
case 'F':
Console.WriteLine("Better try again");
break;
default:
Console.WriteLine("Invalid grade");
break;
}
Si les conditions de déclaration sont des expressions et des valeurs booléennes standard
La déclaration suivante
if (conditionA && conditionB && conditionC) //...
est exactement équivalent à
bool conditions = conditionA && conditionB && conditionC;
if (conditions) // ...
en d'autres termes, les conditions à l'intérieur de l'instruction "if" forment simplement une expression booléenne ordinaire.
Une erreur courante lors de l'écriture d'instructions conditionnelles est de comparer explicitement à true
et false
:
if (conditionA == true && conditionB == false && conditionC == true) // ...
Cela peut être réécrit comme
if (conditionA && !conditionB && conditionC)