在C#中是否存在if语句?

Avi*_* B. 49 .net c# if-statement

我在C#中遇到了以下代码.

if(condition0) statement0;
else if(condition1) statement1;
else if(condition2) statement2;
else if(condition3) statement3;
...
else if(conditionN) statementN;
else lastStatement;
Run Code Online (Sandbox Code Playgroud)

我的一些同事告诉我,这是一个else if声明.但是,我确信它实际上是一个多层嵌套if-else语句.我知道没有分隔符{},一个if或多个语句中允许一个语句else.所以在这种情况下,我认为它将等同于以下代码.

if(condition0) 
  statement0;
else
  if(condition1)
    statement1;
  else
    if(condition2)
      statement2;
    else
      if(condition3)
        statement3;
      else
      ...
Run Code Online (Sandbox Code Playgroud)

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

任何人都可以澄清else if第一个例子中的格式是否被编译器if-else与第二个例子中的嵌套格式区别对待?

Eri*_*ert 78

你是对的; 在C#中没有"else if"语句这样的东西.这只是替代子句的声明本身就是if语句的其他部分.

当然,IDE将"else if"视为特殊,以便您获得您期望的漂亮格式.

请注意,一个#elif在"预处理"的语法结构.

另请注意,C,C++和ECMAScript - 我相信更多类似C语言 - 也具有没有正式"else if"语句的属性.相反,在每个行为中,"else"的定义都落在单个陈述之前.