是否有一种在C#中执行redo
作业的等效方法?即返回到循环的顶部并重新执行而不检查条件或增加循环计数器。感谢。
答案 0 :(得分:8)
for (int i = 0; i < 100; i++)
{
do
{
DoYourStuff();
} while (ShouldWeDoThatAgain());
}
Do...while
就像一个标准的while
循环,除了在每次迭代之前检查它的条件,它会在之后检查。这样,循环内的代码将始终至少执行一次。将其粘贴在for
或foreach
循环中,这样可以获得您想要的行为。这比Simon的回答简单一点,因为它不需要额外的变量,不使用continue
,也不会干扰循环计数器。
答案 1 :(得分:5)
为什么不简单:
虽然goto
并不是每个人都喜欢的,但在这种情况下它很可读......
for(...)
{
redo:
//...
if (...)
goto redo;
}
答案 2 :(得分:3)
没有。你最接近的是这样的:
bool redoCalled = false:
for (int i = 0; i < 10; i++) {
if (redoCalled) {
i--;
redoCalled = false;
}
// other stuff here
if (redoWanted) {
redoCalled = true;
continue;
}
}