Ant*_*ram 44
如果适用,您可以使用它立即退出当前循环迭代并开始下一个迭代.
foreach (var obj in list)
{
continue;
var temp = ...; // this code will never execute
}
Run Code Online (Sandbox Code Playgroud)
A continue
通常与条件有关,通常可以用条件代替条件continue
;
foreach (var obj in list)
{
if (condition)
continue;
// code
}
Run Code Online (Sandbox Code Playgroud)
可以写成
foreach (var obj in list)
{
if (!condition)
{
// code
}
}
Run Code Online (Sandbox Code Playgroud)
continue
如果你可能if
在循环中有几个级别的嵌套逻辑,那么会变得更有吸引力.一个continue
代替嵌套可能使代码更易读.当然,将循环和条件重构为适当的方法也会使循环更具可读性.
Mik*_*sen 15
该continue
关键字用于跳过循环块的其余部分并继续.例如:
for(int i = 0; i < 5; i++)
{
if(i == 3) continue; //Skip the rest of the block and continue the loop
Console.WriteLine(i);
}
Run Code Online (Sandbox Code Playgroud)
将打印:
0
1
2
4
Run Code Online (Sandbox Code Playgroud)
Kon*_*ski 12
它可以防止深度嵌套.
foreach(var element in collection)
{
doSomething();
doSomethingElse();
if (condition1)
{
action1();
action2();
if (condition2)
{
action3();
}
}
}
Run Code Online (Sandbox Code Playgroud)
可以改写为
foreach(var element in collection)
{
doSomething();
doSomethingElse();
if (!condition1)
{
continue;
}
action1();
action2();
if (!condition2)
{
continue;
}
action3();
}
Run Code Online (Sandbox Code Playgroud)
如果代码块不是微不足道但是垂直地更大,则使用continue
可以提高代码可读性.显然它应该像其他语言结构一样被考虑使用.
Joe*_*Joe 11
当你不想break
退出循环,但你想要下一次迭代:
for (int i = 0; i < something; i++)
{
if (condition)
continue;
// expensive calculations, skip due to continue
// or due to the condition above I don't want to
// run the following code
stuff();
code();
}
Run Code Online (Sandbox Code Playgroud)
你应该谨慎使用它.
最好(=最容易阅读)的循环不使用break
或者continue
,它们是一种结构化的goto语句.
话虽如此,1或甚至2个break/continue语句不会使循环变得不可读,但是为了使它们清晰并保持简单而付出代价是值得的.
基本上continue
并且break
是更好(但通常只是伪装)的goto
陈述......
每当你进入一个循环并且知道循环中接下来的所有内容都应该被跳过并继续下一次迭代你可以使用continue
...
因此,它们应该很少使用...有时它们使代码非常易读和清晰(例如,如果替代方案将是几个级别的嵌套)......大多数时候它们会添加类似的混淆goto
.
我,为什么你还没有看到它之前的猜测是,continue
是那种一个表弟的goto
,break
和早期return
的功能秒。我们都知道Goto被认为是有害的,因此许多开发人员可能倾向于避免使用它。
对于我来说,我倾向于continue
在需要清理一些可能不需要某些值的循环时使用。使用continue
I可以跳过这些值,而无需在循环中将“重要”逻辑包含在nested中if
。
foreach (var v in GetSomeValues())
{
if (ThisValueIsNotImportant(v)) continue;
//Do important stuff with the value.
}
Run Code Online (Sandbox Code Playgroud)