Pas du tout:
Le if doit être utilisé pour les sélections de critères "simples", là où le switch permet d'avoir autant d'états que nécessaire.
Quand
@drul parle de machine d'états, c'est le principe d'avoir une sorte d'arbre de décisions.
C'est plus propre et efficace en terme de performances d'avoir un seul switch qu'un empilement stupide de if
Prenons un cas
tu reprends ce que je mentionne le switch sur la valeur a
C#:
switch (a)
{
case 1:
Console.WriteLine("Case 1");
break;
case 2:
Console.WriteLine("Case 2");
break;
default:
Console.WriteLine("Default case");
break;
}
En if ça donnerait un truc du genre
et tu serais obligé d'avoir une clause à la con imbriquée pour gérer le "default"
Soit donc comme suit
C#:
if(a=1) {
Console.WriteLine("Case 1");
} else
{
if(a=2) {
Console.WriteLine("Case 2");
} else {
Console.WriteLine("Sinon");
}
}
Et là c'est le drame, plus la complexité/nombre de clauses arrivent plus ta complexité et profondeur de "if/else" va arriver.
Certains langages permettent vaguement la même chose via une astuce qui est
C#:
if (condition)
else if(condition 2)
else if(condition 3)
else // sinon
Ce truc singe le switch avec moins d'avantages!
Le switch permet en plus de valider plusieurs causes quand on a pas le break!
Par exemple
Si je mets
C#:
switch (a)
case 1:
case 22:
faire un truc
là Si a=1 OU a=22 on fera la même chose
Si on met break à la fin d'une étape d'un case, cela sort du switch. Si on l'omet, cela continue dans le switch pour faire éventuellement une étape complémentaire!
C'est tout l'avantage du switch sur le if... même si l'on peut faire la même chose en if.