Accueil : Le langage C# : Les conditions : L'instruction Switch
L'instruction switch en C#
L’instruction switch permet d’éviter dans certains cas une série if-else if. Attention pour ceux qui l’ont connue au travers d’un autre langage elle présente certaines améliorations.
int mois = 3;
switch (mois)
{
case 1:
Console.WriteLine("Janvier");
break;
case 2:
Console.WriteLine("Fevrier");
break;
case 3:
Console.WriteLine("Mars");
break;
case 4:
Console.WriteLine("Avril");
break;
case 5:
Console.WriteLine("Mai");
break;
// ...
default:
Console.WriteLine("Valeur impossible");
break;
}
La variable testée ici est mois. Pour chaque valeur possible, il faut utiliser une clause case. Dans chaque case, on place les instructions à effectuer puis une instruction break pour marquer la fin de la clause case. Il n’est donc pas nécessaire de mettre les instructions dans un bloc d’accolades à l’intérieur de chaque case. La clause default représente un else et doit obligatoirement être terminée également par un break. La clause default est optionnelle.
On peut faire un switch sur des entiers, des énumérations, des char et enfin des string.
Il est possible de réaliser un même traitement pour plusieurs cas, mais on ne peut pas spécifier d’intervalle de valeur. Il faut lister tous les cas, comme le montre l’exemple suivant :
int mois = 6;
switch (mois)
{
case 1:
case 2:
case 3:
Console.WriteLine("1er trimestre");
break;
case 4:
case 5:
case 6:
Console.WriteLine("2eme trimestre");
break;
case 7:
case 8:
case 9:
Console.WriteLine("3eme trimestre");
break;
case 10:
case 11:
case 12:
Console.WriteLine("4eme trimestre");
break;
}
Si on omet un break dans un case, le compilateur produit une erreur. Ce comportement est spécifique au C#. Si on veut continuer l’exécution du cas suivant pour un cas, il faut utiliser l’instruction goto.
L’exemple suivant met en œuvre ce principe.
int variable = 3;
switch (variable)
{
case 1:
Console.WriteLine("Cas 1");
break;
case 2:
Console.WriteLine("Cas 2");
goto case
3;
case 3:
Console.WriteLine("Cas 3");
goto case
4;
&