还有,如果语句存在于C#中?

我在C#中遇到以下代码。

if(condition0) statement0; else if(condition1) statement1; else if(condition2) statement2; else if(condition3) statement3; ... else if(conditionN) statementN; else lastStatement; 

我的一些同事告诉我,这是一个else if陈述。 不过,我确信它实际上是一个多层嵌套的if-else语句。 我知道没有分隔符{} ,一个语句被允许在一个ifelse 。 所以在这种情况下,我认为它将等同于下面的代码。

 if(condition0) statement0; else if(condition1) statement1; else if(condition2) statement2; else if(condition3) statement3; else ... 

请注意,我改变的只是空白。 这个缩进是有效的,因为当没有分隔符的时候, else都会回到最近的if语句。

任何人都可以澄清,如果第一个例子中的else if格式被编译器对待,而不是第二个例子中嵌套的if-else格式?

你是对的; 在C#中不存在“else if”语句。 这只是一个别的地方,这个替代条款的陈述本身就是一个if语句。

当然, IDE将“else if”视为特别的,这样你就可以获得所期望的良好格式。

请注意,“预处理器”语法中有一个#elif构造。

还要注意,C,C ++和ECMAScript–我相信还有更多的类C语言 – 也有一个属性,就是没有正式的“else if”语句。 相反,在每一个行为都落在“其他”的定义之前,就像是在一个陈述之前。

这是一个多层次的if-else。

它的原因是与C#语法规则有关。 else是后面跟着一个声明,任何if链条限定为一个声明。

else if构造else if在C#规范中从未提及,除非在一些使用它的例子中没有解释。 所以我不认为这是一个特殊的构造,它只是嵌套的if语句。

在C#中没有“else if”语句。

对于这个问题,我不知道在C#中有任何多词语句关键字。

你是对的。 这只是一个后跟一个if

要扩大@ hunter的答案的理由,当你点击它,没有括号,它将只执行下一行,如果它是一堆嵌套的其他需要括号:

 if(condition0) statement0; else { if(condition1) statement1; else { if(condition2) statement2; else { if(condition3) statement3; else ... } } } 

C#语言规范的select语句只显示ifswitch语句。 如果你selectif语句,它会说:

if语句根据布尔expression式的值select要执行的语句。

if语句:

if(boolean-expression)embedded语句

if(boolean-expression)embedded-statement elseembedded语句布尔expression式:expression式

如果语法允许的话,else部分与词汇上最接近的前面相关联

你给的两个例子在每种语言中都是相同的。 在C或C#中,它完全等价于一个else,那么if。 在其他一些语言中,elseif是语法糖,否则,if。 所以无论你使用哪种语言,他们都会编译成相同的代码(或者解释为相同的行为)。 请参阅http://en.wikipedia.org/wiki/Conditional_%28programming%29#Else_If