高难度
只有问微软了
如果如下怎办:
switch(i)
{
case 1:  {do1;  }
case 2:  {do2;break;}
case 3:  {do3;break;}
default:{do4;break;}
}
看来break还需要的
i=1时 处理do1,do2

解决方案 »

  1.   

    这是规范,空的case是可以进入下一个case的
      

  2.   

    switch(i)
    {
    case 1:  {do1;  }
    case 2:  {do2;break;}
    case 3:  {do3;break;}
    default:{do4;break;}
    }那个,似乎不能通过编译的?
      

  3.   

    上述两个疑问,难道是因为C#的设计者没有很好的考虑到C/C++那样设计的初衷,还是因为C#中其他的限制导致的结果?可是找不到C#中哪些规则可以推论出上述设计的必要性。我想一定有很多人曾受益于,且正受益于C/C++那种设计了。
      

  4.   

    1。怎么会“不准许从一个 case 执行完后,自动进入下一个case”呢,除非前一个case里有break。这个同 howbigsea(大海) 
    2。这是概念问题,也是规定。既然是虚拟成员就有被派生类改变的可能,覆盖(改变)用override关键字。如果不是public则不能被继承类成员覆盖,那也就无所谓虚拟成员了,它仍然可以被父类对象调用。所以不能是private. :)