是否有redo
在 C# 中执行工作的等效方法?即回到循环顶部并重新执行而不检查条件或增加循环计数器。谢谢。
问问题
1079 次
3 回答
8
for (int i = 0; i < 100; i++)
{
do
{
DoYourStuff();
} while (ShouldWeDoThatAgain());
}
Do...while
就像一个标准while
循环,除了不是在每次迭代之前检查它的条件,而是在之后检查。这样,循环内的代码将始终至少执行一次。把它放在一个for
orforeach
循环中,这应该会让你得到你想要的行为。这比西蒙的回答简单一点,因为它不需要额外的变量,不使用continue
,并且根本不会弄乱循环计数器。
于 2013-01-27T12:16:33.807 回答
5
为什么不简单:
虽然goto
并不是每个人都喜欢它,但在这种情况下它的可读性很强......
for(...)
{
redo:
//...
if (...)
goto redo;
}
于 2013-10-16T09:40:42.727 回答
3
不,你会得到最接近的是这样的:
bool redoCalled = false:
for (int i = 0; i < 10; i++) {
if (redoCalled) {
i--;
redoCalled = false;
}
// other stuff here
if (redoWanted) {
redoCalled = true;
continue;
}
}
于 2013-01-27T11:31:11.000 回答