如何在switch 块内打破foreach循环?
通常,您使用break,但如果在switch 块中使用break,它只会使您脱离switch 块,foreach循环将继续执行:
foreach (var v in myCollection)
{
switch (v.id)
{
case 1:
if (true)
{
break;
}
break;
case 2;
break
}
}
当我在switch
块内需要跳出foreach
时,我目前正在做的是将循环外的bool
值设置为真,并在每次输入foreach
时和进入switch 块之前判断这个布尔值.比如:
bool exitLoop;
foreach (var v in myCollection)
{
if (exitLoop) break;
switch (v.id)
{
case 1:
if (true)
{
exitLoop = true;
break;
}
break;
case 2;
break
}
}
这很管用,但我一直在想,肯定有更好的方法来做这件事,我不知道……
编辑:想知道为什么这没有像@jon_Darkstar提到的那样在.NET中实现,就像它在PHP中真正整洁的工作方式一样?
$i = 0;
while (++$i) {
switch ($i) {
case 5:
echo "At 5<br />\n";
break 1; /* Exit only the switch. */
case 10:
echo "At 10; quitting<br />\n";
break 2; /* Exit the switch and the while. */
default:
break;
}
}