日期:2014-05-17  浏览次数:20807 次

switch case 为何不允许嵌套? 如何实现我需要的功能? 只能用else if 吗?
switch( type)
  {
  case 0x00:
  return "ICMP_ECHOREPLY";
  break;
  case 0x03:
  switch (subCode)
  {
  case 0x00:
  return "ICMP_UNREACH_NET";
  break;
  ................//省略若干
  default:
  return "TYPE0X03 未知数据包";
  break;
  }
  break;
  ...................//省略若干
  default:
  return "unknowPacket";
  break;
  }

------解决方案--------------------
我做的测试,是可以的。具体的代码如下:
 protected void Page_Load(object sender, EventArgs e)
{
int m = 12;
int n = 12;
switch (m)
{
case 1:
break;
case 12:
switch (n)
{
case 12:
Response.Write("Ok");
break;
default:
break;
}
break;
default:
break;
}

}
------解决方案--------------------
你嵌套的里面用return不对,你里面又用了return,你让程序帮你返回到什么地方去
------解决方案--------------------
应该可以的 有什么错误信息吗?
------解决方案--------------------
switch嵌套使用也是没问题的。你把你的出错提示贴出来,这样才能找问题原因,不要自己先”确诊“再让别人给你找原因。

switch (flag)
{
case 0:
return 10;
case 1:
switch (type)
{
case 0:
return 100;
case 1: 
return 200;
default:
return 30;
}
default:
return 30;
}
------解决方案--------------------
9楼的代码 测试通过 VS2005
C# code

switch   (flag) 
                        { 
                                case   0: 
                                        return   10; 
                                case   1: 
                                        switch   (type) 
                                        { 
                                                case   0: 
                                                        return   100; 
                                                case   1:   
                                                        return   200; 
                                                default: 
                                                        return   30; 
                                        } 
                                default: 
                                        return   30; 
                        }

------解决方案--------------------
都return了,break当然没意义了
------解决方案--------------------
return了又break当然会出错了!
------解决方案--------------------
return了又break会给处警告信息但不会影响程序的运行。这不算错。但是有return就不要写break;或有break就不要写return!