是否可以使用goto与开关? [英] Is it possible to use goto with switch?

查看:157
本文介绍了是否可以使用goto与开关?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



基本上,我有一个开关,可以对单个标准排序的东西,并且可以使用C#



说:

  switch(color)
{
case绿色:
case红色:
case蓝色:
Paint();
break;
case黄色:
if(AlsoHasCriteriaX)
Paint();
else
goto default;
break;
默认值:
打印(Ugly color,no paint。)
break;
}


解决方案

这个:

  switch(color)
{
case GREEN:
case RED:
case BLUE:
Paint();
break;
case黄色:
if(AlsoHasCriteriaX){
Paint();
break; / *通知break here * /
}
默认值:
打印(Ugly color,no paint。)
break;
}

或者您可以这样做:

  switch(color)
{
case绿色:
case红色:
case蓝色:
Paint );
break;
case黄色:
if(AlsoHasCriteriaX){
Paint();
break; / * notice break here * /
}
goto explicit_label;

case FUCHSIA:
PokeEyesOut();
break;

默认值:
explicit_label:
打印(丑色,无油漆)
break;
}


It seems it's possible with C#, but I need that with C++ and preferably cross platform.

Basically, I have a switch that sorts stuff on single criteria, and falls back to default processing on everything else.

Say:

switch(color)
{
case GREEN:
case RED:
case BLUE:
    Paint();
    break;
case YELLOW:
    if(AlsoHasCriteriaX)
        Paint();
    else
        goto default;
    break;
default:
    Print("Ugly color, no paint.")
    break;
}

解决方案

Not quite but you can do this:

switch(color)
{
case GREEN:
case RED:
case BLUE:
     Paint();
     break;
case YELLOW:
     if(AlsoHasCriteriaX) {
         Paint();
         break; /* notice break here */
     }
default:
     Print("Ugly color, no paint.")
     break;
}

OR you could do this:

switch(color)
{
case GREEN:
case RED:
case BLUE:
     Paint();
     break;
case YELLOW:
     if(AlsoHasCriteriaX) {
         Paint();
         break; /* notice break here */
     }
     goto explicit_label;

case FUCHSIA:
     PokeEyesOut();
     break;

default:
explicit_label:
     Print("Ugly color, no paint.")
     break;
}

这篇关于是否可以使用goto与开关?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆