c# - 由于curlys进入if语句后进入else语句

标签 c# if-statement

这个代码示例可以正常工作,例如第一个 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/

相关文章:

c# - 带反射 C# 的简单工厂

c# - 如何从 C# 中的 HTTP Post 访问 header 信息?

c# - 关于 web service 和 asp.net 的问题

javascript - 在 if 语句中使用 if 语句,好的还是坏的做法?

javascript - 为什么 IF 语句不起作用?

java - if(false){some code} 在 java 中是什么意思

c# - 可选参数odata函数c#

c# - 我应该在哪个页面上为具有布局和部分 View 的 ASP.NET Web 应用程序添加 ajax 查询?

php - WooCommerce 如何对自定义类别执行条件检查

java - 简短的 java if else if else 语句