我有一个代码:
while(condition)
{
foreach(string s in list)
{
switch(j)
{
case 1:
//do something
continue;//can I break out of foreach here?
case 2:
//do another
continue;//break
..other cases;
}
//do some stuff
}
//do some stuff
}
我正在考虑goto
,但我听到很多不好的事情。
答案 0 :(得分:1)
只需使用布尔变量:
while(condition)
{
foreach(string s in list)
{
var breakout = false;
switch(j)
{
case 1:
//do something
breakout = true;
break;
// ...
}
if(breakout)
{
break;
}
}
//do some stuff
}
答案 1 :(得分:1)
我假设你要做的是从交换机内部断开,让它退出for循环而不是while循环。我的建议是将整个事情放入一个函数中,并在任何想要破解的地方放置一个return语句。例如:
void f () {
foreach(string s in list) {
switch(j) {
case 1:
//do something
return;
case 2:
//do another
continue;//break
..other cases;
}
//do some stuff
}
}
// ... later somewhere
while (condition) {
f();
}
答案 2 :(得分:1)
布尔状态变量应该可以解决问题:
bool isBadInput = false;
bool isRunning = true;
while(isRunning && !isBadInput){
for(int j = 0; j < list.size() && !isBadInput; ++j){
switch(j){
case 0:
int res = handleCase0();
if(res == -1){
isBadInput = true;
isRunning = false;
}
break;
//similar for other cases
}
}
答案 3 :(得分:0)
我正在考虑
goto
,但我听到很多不好的事情。
然后,您应确保在做出决定之前获得充分信息。从GOTO still considered harmful?链接的文章深入讨论了这一主题。
编写您认为简明扼要地表达您的意图的代码,对您的编程语言来说是惯用的,最终将是最容易维护的。