在C#中是否有执行redo
工作的等效方法?即返回循环顶部并重新执行而不检查条件或增加循环计数器。谢谢。
for (int i = 0; i < 100; i++)
{
do
{
DoYourStuff();
} while (ShouldWeDoThatAgain());
}
Do...while
是一种类似于标准的 while
循环的结构,不同之处在于它会在每次迭代结束后检查条件。这样,循环内的代码至少会被执行一次。将其放在一个 for
或 foreach
循环中,就可以获得你想要的行为。这比 Simon 的答案更简单,因为它不需要额外的变量,不使用 continue
,也不会干扰循环计数器。
goto
并不是每个人都喜欢的,但在这种情况下它很容易理解。for(...)
{
redo:
//...
if (...)
goto redo;
}
不行。你最接近的选择可能是像这样:
bool redoCalled = false:
for (int i = 0; i < 10; i++) {
if (redoCalled) {
i--;
redoCalled = false;
}
// other stuff here
if (redoWanted) {
redoCalled = true;
continue;
}
}
continue
语句仍会增加循环计数器。 - Simon Whiteheadcontinue
。这不是一个答案,只是一条评论 :) - Saju