switch(i)
        {
            case 0-20:
                "a"
               break;
            case 21-50:
                 "b"
                break;
            default:
                "c"
                break;
        }
这样写不管i如何都只执行default:
                     "c"应该怎么写呢?

解决方案 »

  1.   

    C#中switch的case值只能是单个值,不允许范围...你是VB转过来的吧...case 0-20: => case -20:
    case 21-50: => case -29:以上都被视为减法...
      

  2.   

    case里面只能是一个常量,不是能一个范围;
    要范围的话使用if更适合
      

  3.   

    case的值必须是常量表达式,不允许使用变量如果你非得这么写的话你就全部列出来喽,switch(i) 
            { 
                case "0": 
                    "a" 
                  break; 
               case "1": 
                    "a" 
                  break;               .....            case "50": 
                    "b" 
                    break; 
                default: 
                    "c" 
                    break; 
            } 
    这样累不累啊
      

  4.   

    你去看看 语法啦
    我记得不清楚啦
    影像中是 case后面跟着的是 (数字或者字母)--------------
    我给你找原因啦
    switch(i) 
    你输入的就等于 i=1,i=2, i=3
    你这里做判断 case 0-20: 
    就相当于
    1 = 0-20
    着肯定不成立的啦
    default: C啦
      

  5.   

    这没什么好办法
    或许可以使用if...else if ... else这样的结构,起码可以表达范围,switch不可以case范围
      

  6.   

    你先这样写 0-20的数全定义为一个特定的字符如(a,b,c...)
    同理(20-50)也一样
    然后就是
    switch(i)
    {
      case "a":
      case "b":
      ..............
    }
      

  7.   

    有case要这样写才行,否则就用if...else...试试,应该没那么麻烦.
    switch(i) 
      { 
         case 0: 
         case 1:
         ...
         case 20:
            "a" 
             break; 
         case 21-50: 
         case 22:
         ...
         case 50:
             "b" 
              break; 
         default: 
              "c" 
               break; 
            }