【问题标题】:Is it possible to manage loop with a switch statement? [duplicate]是否可以使用 switch 语句管理循环? [复制]
【发布时间】:2019-10-28 22:18:26
【问题描述】:

我想控制一个while循环,如果结果是“继续”我什么都不做,如果是“重试”我想跳过这一步,如果是“完成”我想打破循环。

问题在于 switch 语句本身使用了我需要管理循环的“break”和“continue”关键字。

while(some bool)
{
   var result = GetResult(...);
   switch(result)
   {
      case MyResult.Continue:
      //do nothing
      break;
      case MyResult.Retry:
      // continue the loop
      break;
      case MyResult.Finish:
      // break the loop
      break;
   }
}

这甚至可能吗,或者我应该只使用 if else 语句来执行此操作(毕竟,可能的结果范围不是那么大)?

编辑:

公元“跳过这一步”: 好吧,我想过度概括这个过程。实际上,如果结果是“继续”,我想执行一些代码,问题的优点是是否可以使用“中断”和“继续”来控制 switch 语句中的循环。 所以是的,答案已经在here

【问题讨论】:

标签: c# loops switch-statement break continue


【解决方案1】:

关于“跳过这一步”,您的问题有点不清楚,因为您没有具体说明这实际上是什么意思,但是是的,您完全可以使用开关来管理循环条件

bool continueLoop = true;
while(continueLoop)
{
   var result = GetResult(...);
   switch(result)
   {
      case MyResult.Continue:
      //do nothing
      break;
      case MyResult.Retry:
      // continue the loop
      break;
      case MyResult.Finish:
      // break the loop
      continueLoop = false;
      break;
   }
}

【讨论】:

  • 甚至是for(bool continueLoop = true; continueLoop;) {...} 而不是bool continueLoop = true; while(continueLoop) {...}
  • 一般情况下continueLoop = false; continue;,如果我们在switch之后有一些代码:while(...) {...switch(result) {} some_code_here}
猜你喜欢
  • 2022-01-24
  • 1970-01-01
  • 2016-04-09
  • 1970-01-01
  • 2014-09-10
  • 2018-08-05
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
相关资源
最近更新 更多