为什么我应该使用 continue 而不是空的 if 语句?

Why should I use continue as opposed to an empty if statement?

例如: 使用这个块的disadvantage/advantage是什么:

for(int i = 0; i < 10; i++)
{
   if(i < 9){}
   else Console.Writeline(i);
}

相对于这个区块:

for(int i = 0; i < 10; i++)
{
   if(i < 9)
   {
   continue;
   }
   Console.Writeline(i);
}

考虑到他们的输出完全一样。

我总是这样

// ...
if(!(i < 9))
    Console.Writeline(i);
// ...

防止出现空的 if 语句。

在您的代码中,两者之间几乎没有区别,第一个没有到达 else 语句,第二个跳过循环中的其余部分。

空块很奇怪,所以在这种情况下,您只需反转条件即可:

for (int i = 0; i < 10; i++)
{
   if (i >= 9)
       Console.Writeline(i);
}

但在一般情况下,使用continuebreak 是防止代码缩进太多级别的好方法。有关该主题的一些讨论,请参阅 Programmers SE 上的 this question

我发现选择一个而不是另一个的唯一原因是易读性。我个人使用这两种形式,更多地根据 if 之后的块的长度选择一种或另一种。例如,如果它只包含几行,我只使用普通的 if:

for (int i = 0; i < 10; i++)
{
   if (i >= 9)
       Console.Writeline(i);
}

(示例取自 )。

但如果工作量很大,我会反转条件并依赖 continue

for (int i = 0; i < 10; i++)
{
   if (i < 9) continue;

   Console.Writeline(i);
   Console.Writeline("this");
   Console.Writeline("that");
   Console.Writeline("blablabla");
   Console.Writeline("hello");
   Console.Writeline("world");
   Console.Writeline(i + 1);
   Console.Writeline(i + 2);
}

这样做可以避免在更大的块上缩进。在一行或几行上做通常很容易阅读,但在较长的块上可能会变得更难理解。