继续;曾经跳过很多循环

时间:2011-01-28 09:20:29

标签: c# loops continue

以下是我的代码架构:

while (..)
{
   for (...; ...;...)
        for(...;...;...)
            if ( )
            {
                 ...
                 continue;
            }
} 

继续做什么?他只会让第二次循环迭代一次,不是吗? 我希望它能够达到目标,是否可能?

谢谢!

6 个答案:

答案 0 :(得分:5)

此处continue影响最近的循环 - 您的第二个for。有两种方法直接跳转到while

  • goto,虽然有时“被认为有害”,但这可以说仍然是存在的主要原因
  • return

说明后者:

while (..)
{
    DoSomething(..);
}

void DoSomething(..) {
    for (...; ...;...)
      for(...;...;...)
          if ( )
          {
             ...
             return;
          }
}

和前者:

while (..)
{
   for (...; ...;...)
        for(...;...;...)
            if ( )
            {
                 ...
                 goto continueWhile;
            }
   continueWhile:
       { } // needs to be something after a label
}

答案 1 :(得分:2)

while (..)
{
   for (...; ...;...)
        for(...;...;...)
            if ( )
            {
                 ...
                 goto superpoint;
            }
superpoint:
//dosomething
} 

答案 2 :(得分:2)

您应该设置一个变量来确定何时需要离开循环。

while (..)
{
    bool goToWhile = false; 

    for (...; ... && !goToWhile; ...)
        for (...; ... && !goToWhile; ...)
            if ( )
            {
                ...
                goToWhile = true; 
            }
} 

但是想出更好的名字;)

答案 3 :(得分:1)

不可能直接因为continue;只继续执行当前循环,转到外部循环你唯一能做的就是设置一些标志并在外循环中检查它

答案 4 :(得分:1)

continuebreak始终是最接受continuebreak的内部循环。在这种情况下,它是代码中最低的for循环。

答案 5 :(得分:0)

只有使用continue语句才有可能。 Continue和break语句仅影响它们嵌套的最内部循环。

您可以设置变量并在外循环中进行检查。或者在for语句中重新组织IF语句和break条件。

while (..)
{
   for (...; ...;...)
   {
        for(...;...;...)
            if ( )
            {
                 ...
                 skipLoop = true
            }
         if (skipLoop)
             continue;
    }
} 

希望这有帮助!