这个代码示例可以正常工作,例如第一个 if 进入,不满足第二个 if 后退出。
if (i < _commandList.Count)
{
if (output.Length > 0)
Console.WriteLine(output);
}
else
Console.WriteLine("Invalid Command.");
我最初将其编码为这样,但它不起作用。进入了第一个if,果然没有遇到第二个if,然后进入了else语句,做了writeline。
if (i < _commandList.Count)
if (output.Length > 0)
Console.WriteLine(output);
else
Console.WriteLine("Invalid Command.");
为什么第二个代码块与第一个代码块的工作方式不同?由于第一条语句下方只有一行代码,我认为不使用 {}
是允许的。
作为引用,栈帧是:
_commandList.Count = 1
output.Length = 0
i = 0
最佳答案
这是“悬垂的 else
”问题:else
总是属于 最接近的 if,无论缩进如何。
您的第一个片段使用大括号告诉编译器 else
属于顶部 if
,而不属于内部。第二个片段让编译器决定;编译器应用最近的 if
规则,并将 else
附加到内部 if
。
关于c# - 由于curlys进入if语句后进入else语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21942101/