J'ai rencontré le code suivant en C #.
if(condition0) statement0;
else if(condition1) statement1;
else if(condition2) statement2;
else if(condition3) statement3;
...
else if(conditionN) statementN;
else lastStatement;
Certains de mes collègues me disent qu'il s'agit d'une déclaration else if
. Cependant, je suis convaincu qu'il s'agit en fait d'une instruction imbriquée multicouche if-else
. Je sais que sans délimiteurs {}
, Une instruction est autorisée dans un if
ou else
. Donc, dans ce cas, je pense que ce serait équivalent au code suivant.
if(condition0)
statement0;
else
if(condition1)
statement1;
else
if(condition2)
statement2;
else
if(condition3)
statement3;
else
...
Notez que tout ce que j'ai changé, c'est l'espace. Cette indentation fonctionne car chaque else
revient à la dernière instruction if
lorsqu'il n'y a pas de délimiteurs.
Quelqu'un peut-il préciser si le format else if
Dans le premier exemple est traité différemment par le compilateur que le format imbriqué if-else
Dans le deuxième exemple?
Vous avez raison; il n'y a rien de tel qu'une instruction "else if" en C #. C'est juste un autre où l'instruction de la clause alternative est elle-même une instruction if.
Bien sûr, le IDE traite "else if" comme spécial afin que vous obteniez le formatage de Nice que vous attendez.
Notez qu'il y a is an #Elif
construction dans la syntaxe "préprocesseur".
Notez également que C, C++ et ECMAScript - et je suis sûr que beaucoup d'autres langages de type C - ont également la propriété qu'il n'y a pas de déclaration formelle "else if". Au contraire, dans chacun, le comportement sort de la définition de "else" comme devant une seule déclaration.
C'est un if-else à plusieurs niveaux.
La raison en est liée aux règles de syntaxe c #. Un else
est suivi d'une instruction, et toute chaîne if
est considérée comme une instruction.
La construction else if
n'est jamais mentionné dans la spécification C # , sauf dans certains exemples où il est utilisé sans explication. Je ne pense donc pas que ce soit une construction spéciale, elle est juste imbriquée si des instructions.
Vous avez raison. C'est juste un else
suivi d'un if
.
Il n'y a aucune instruction "else if" en C #.
Pour cette question, je ne sais pas qu'il existe tout mots-clés d'instruction multi-Word en C #.
Pour développer la réponse de @ hunter, la raison en est que, sans crochets, il n'exécutera que la ligne suivante, s'il s'agissait d'un groupe de nids, les autres auraient besoin de crochets:
if(condition0)
statement0;
else
{
if(condition1)
statement1;
else
{
if(condition2)
statement2;
else
{
if(condition3)
statement3;
else
...
}
}
}
Instruction de sélection de la spécification de langage C # affiche uniquement les instructions if
et switch
. Si vous sélectionnez l'instruction if
, elle indique:
L'instruction if sélectionne une instruction à exécuter en fonction de la valeur d'une expression booléenne.
instruction if:
if (expression-booléenne) instruction-intégrée
if (expression-booléenne) instruction-intégrée else instruction-intégrée expression-booléenne: expression
Une autre partie est associée à la précédente lexiquement la plus proche si cela est autorisé par la syntaxe
Les deux exemples que vous donnez sont équivalents dans toutes les langues. En C ou C #, c'est exactement équivalent à un autre, alors si. Dans certaines autres langues, elseif est du sucre syntaxique pour else, alors si. Donc, peu importe la langue que vous utilisez, ils se compileront dans le même code (ou seront interprétés avec le même comportement). Voir http://en.wikipedia.org/wiki/Conditional_%28programming%29#Else_If