为什么我应该使用 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);
}
但在一般情况下,使用continue
或break
是防止代码缩进太多级别的好方法。有关该主题的一些讨论,请参阅 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);
}
这样做可以避免在更大的块上缩进。在一行或几行上做通常很容易阅读,但在较长的块上可能会变得更难理解。
例如: 使用这个块的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);
}
但在一般情况下,使用continue
或break
是防止代码缩进太多级别的好方法。有关该主题的一些讨论,请参阅 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);
}
这样做可以避免在更大的块上缩进。在一行或几行上做通常很容易阅读,但在较长的块上可能会变得更难理解。