Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我应该使用continue而不是空的if语句?_C#_.net_If Statement_Continue - Fatal编程技术网

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

C# 为什么我应该使用continue而不是空的if语句?,c#,.net,if-statement,continue,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); } for(int i=0;i

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

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);
}
for(int i=0;i<10;i++)
{
如果(i<9){}
else控制台。Writeline(i);
}
与此块相反:

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);
}
for(int i=0;i<10;i++)
{
如果(i<9)
{
继续;
}
控制台写入线(i);
}
考虑到它们的输出完全相同。

我总是这样做

// ...
if(!(i < 9))
    Console.Writeline(i);
// ...
/。。。
如果(!(i<9))
控制台写入线(i);
// ...
以防止出现空if语句


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

空块很奇怪,因此在这种情况下,您只需反转条件:

for (int i = 0; i < 10; i++)
{
   if (i >= 9)
       Console.Writeline(i);
}
for(int i=0;i<10;i++)
{
如果(i>=9)
控制台写入线(i);
}

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

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

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

这样做可以避免在更大的块上出现压痕。在一行或几行上做通常很容易阅读,但在较长的块上做可能更难理解。

一行比另一行没有优势。。如果使用空if,则会使其难以阅读(有时)。。您最好使用
if(i>=9){..}
顺便说一句,在您的示例中,它只打印9,因为循环最多只有10个。也许了解编译器如何使用continue关键字的人可以给出一些建议。我不知道,但继续可能会有一些性能上的缺点/优势。@Andre他们没有性能上的缺点。也不是优势。性能差异将接近ε;)只有可读性。由您自己或您的团队决定哪种方法更具可读性,正如poke所说,这是防止程序缩进太多级别的好方法。在我看来,如果块的可读性较差,那么块的可读性较差,但是当我有一个空的if语句时,我发现只做一个notif语句通常是有用的。有时我的大脑不工作,或者我必须在if语句中添加更多的逻辑,使其工作,而不必执行NOT NOT操作。如果可以用“
返回”
、“
继续”
或“
中断”
”><代码>如果(i<9)返回我想这是我个人的观点,只是我个人不喜欢使用“空”if语句(除了返回/继续/中断之外什么都不做的语句),缩进代码比缩进程序更有意义