4

是否有redo在 C# 中执行工作的等效方法?即回到循环顶部并重新执行而不检查条件或增加循环计数器。谢谢。

4

3 回答 3

8
for (int i = 0; i < 100; i++)
{
    do
    {
        DoYourStuff();
    } while (ShouldWeDoThatAgain());
}

Do...while就像一个标准while循环,除了不是在每次迭代之前检查它的条件,而是在之后检查。这样,循环内的代码将始终至少执行一次。把它放在一个fororforeach循环中,这应该会让你得到你想要的行为。这比西蒙的回答简单一点,因为它不需要额外的变量,不使用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 回答