例如: 使用此块的缺点/优点是什么:
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);
}
考虑到他们的输出完全相同。
答案 0 :(得分:9)
空块很奇怪,所以在这种情况下,你只需要反转条件:
for (int i = 0; i < 10; i++)
{
if (i >= 9)
Console.Writeline(i);
}
但是在一般情况下,使用continue
或break
是防止代码缩进太多级别的好方法。有关该主题的一些讨论,请参阅程序员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);
}
这样做可以避免在更大的块上进行缩进。在单行或非常少的行上进行操作通常很容易阅读,但在较长的块上可能会变得更难以理解。