如何证明嵌套的else语句的执行顺序?

Kon*_*ten 4 c# if-statement

请注意,这不是一个问题,如何别的结合的范围,以及如何延伸.此外,请注意,这不是一个问题,我们是否应该使用花括号.

注意以下嵌套条件语句.

if(alpha)
  if(beta)
    AlphaAndBeta();
  else
    AlphaNotBeta();
Run Code Online (Sandbox Code Playgroud)

就个人而言,即使我非常相信删除任何多余的括号,我建议在这种情况下使用花括号来充分说明else语句是内部条件的一部分,这看起来很棘手.特别是如果一些聪明的驴开始像这样的缩进一起徘徊.

if(alpha)
  if(beta)
    AlphaAndBeta();
else
  AlphaNotBeta();
Run Code Online (Sandbox Code Playgroud)

但是,我想方便地参考描述行为的位置.我查看了MSDN上的语言定义,但没有找到确切的位置.它需要超级超明确表示如何将别人绑定到它如果(并且不一定是MS的官方网站).

我在哪里可以找到该页面?

ang*_*son 7

这在C#规范中有记录,第8.7.1节 - if声明:

一个else部分与词法最近的前一个相关联的if由该句法允许的.因此,if表格的陈述

if (x) if (y) F(); else G();
Run Code Online (Sandbox Code Playgroud)

相当于

if (x) {
   if (y) {
      F();
   }
   else {
      G();
   }
}
Run Code Online (Sandbox Code Playgroud)


Tim*_*ter 6

这是一个资源,MSDN:

then语句和else语句中的语句可以是任何类型,包括嵌套在原始if语句中的另一个if语句.在嵌套的if语句中,如果没有相应的else,则每个else子句都属于last.