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

时间:2015-11-21 17:16:21

标签: c# .net if-statement continue

例如: 使用此块的缺点/优点是什么:

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);
}

考虑到他们的输出完全相同。

3 个答案:

答案 0 :(得分:9)

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

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

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

答案 1 :(得分:3)

我总是这样做

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

防止空if语句。

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

答案 2 :(得分:1)

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

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

(取自poke answer)。

但是如果工作量相当大,我会改变这种情况并依赖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);
}

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