好奇心问题,非常简单。
假设我有一个while
循环,并且在该循环内执行的最后一段代码是switch
语句,我应该用case
还是break
完成我的continue
块?
据我所知,执行的结果实际上是相同的。其中之一更快吗?有奇怪的情况吗?
while (ShouldLoop)
{
switch (myInt)
{
case 0:
doStuff();
break; // or continue?
default:
break; // that is the question.
}
}
几乎可以肯定,您应该使用break
完成case语句块。考虑以下两种情况:
case
语句,则应使用break
。switch
语句后可能有一些代码,您希望在某些情况下跳过这些代码。在这种情况下,continue
语句比上述情况更合适,但这听起来像是意大利面条。如果是这种情况,您最好在case
语句块中设置一个布尔变量并使用break
。然后,您可以在此布尔标志上用if
语句包装以下代码。这有点主观,因为两者都是“工作”,但是其中一个人的IMO意图要明确得多。
continue
将始终作用于封闭的while
循环,无论您将其放置在代码中的什么位置,都指示编译器继续进行ShouldLoop
的下一个评估,同时在继续执行后停止执行任何代码。另一方面,无论您将break
放置在while
循环的第1级(只是退出循环),还是将其放置在switch-case
的内部,都会停止求值并退出switch-case
编译器遇到关键字。
[正如@ simon-pearson指出的那样,在某些情况下,continue
内的switch-case
可能有意义,但是绝对不是可读的代码,此类用例应该用其他解决方法代替。通常,switch-case
应该写为break
。