而循环以开关结尾:我应该使用“ break”还是“ continue”来得出结论?

问题描述 投票:0回答:2

好奇心问题,非常简单。

假设我有一个while循环,并且在该循环内执行的最后一段代码是switch语句,我应该用case还是break完成我的continue块?

据我所知,执行的结果实际上是相同的。其中之一更快吗?有奇怪的情况吗?

while (ShouldLoop)
{
     switch (myInt)
     {
         case 0:
             doStuff();
             break; // or continue?
         default:
             break; // that is the question.
     }
 }
c# while-loop switch-statement break continue
2个回答
1
投票

几乎可以肯定,您应该使用break完成case语句块。考虑以下两种情况:

  • 如果重要的是您不遵循下面的case语句,则应使用break
  • 您提供了不完整的代码示例,switch语句后可能有一些代码,您希望在某些情况下跳过这些代码。在这种情况下,continue语句比上述情况更合适,但这听起来像是意大利面条。如果是这种情况,您最好在case语句块中设置一个布尔变量并使用break。然后,您可以在此布尔标志上用if语句包装以下代码。

这有点主观,因为两者都是“工作”,但是其中一个人的IMO意图要明确得多。


1
投票

continue将始终作用于封闭的while循环,无论您将其放置在代码中的什么位置,都指示编译器继续进行ShouldLoop的下一个评估,同时在继续执行后停止执行任何代码。另一方面,无论您将break放置在while循环的第1级(只是退出循环),还是将其放置在switch-case的内部,都会停止求值并退出switch-case编译器遇到关键字。

[正如@ simon-pearson指出的那样,在某些情况下,continue内的switch-case可能有意义,但是绝对不是可读的代码,此类用例应该用其他解决方法代替。通常,switch-case应该写为break

© www.soinside.com 2019 - 2024. All rights reserved.