如何证明嵌套else语句的执行顺序
本文关键字:语句 else 执行 顺序 嵌套 何证明 证明 | 更新日期: 2023-09-27 18:15:57
请注意,不是关于如何else绑定以及如何扩展作用域的问题。另外,请注意,这不是一个应该或不应该使用大括号的问题。
考虑下面的嵌套条件语句。
if(alpha)
if(beta)
AlphaAndBeta();
else
AlphaNotBeta();
就我个人而言,即使我非常赞成删除任何多余的括号,我也建议在这种情况下使用花括号,以非常清楚地表明else语句是内部条件的一部分,这可能很棘手,特别是当一些聪明的人开始像这样用缩进胡闹时。
if(alpha)
if(beta)
AlphaAndBeta();
else
AlphaNotBeta();
然而,我想有一个方便的参考,在哪里描述的行为。我在MSDN上查看了语言定义,但没有找到确切的位置。它需要非常清楚地说明else如何绑定到if(不一定是微软的官方网站)。
请问我在哪里可以找到那一页?这在c#规范第8.7.1节- if
语句中有记录:
的
else
部分与语法允许的词法上最接近的if
部分相关联。因此,形式为if
语句if (x) if (y) F(); else G();
等价于
if (x) { if (y) { F(); } else { G(); } }
这里有一个资源,MSDN:
then语句和else语句可以是任何类型的,包括另一个if语句嵌套在原始if语句中。在嵌套if语句中,每个如果没有对应的Else子句,则属于最后一个其他。