如下:
Switch(a)
{
    case "1":
         b=1;
         break;
    case "2":
         b=2;
         break;
    case "3":
         b=3;
         break;
}我想写成:Switch(a)
{
    case "1","2":
         b=12;
         break;
    case "3":
         b=3;
         break;
}为什么这样写不对?我想把多个条件写在一个case里应该怎么写?谢谢!

解决方案 »

  1.   

    Switch(a)
    {
        case "1":
        case "2":
             b=12;
             break;
        case "3":
             b=3;
             break;
    }
      

  2.   

    不能 case "1","2":
    这样写在一块吗?
      

  3.   

    c#语言Switch的语法不支持这样写,你就多写一个吧.或者作个新的c#编译器!?
      

  4.   

    有这个必要吗?为什么要这样写啊
    我觉得代码也简洁不到那里去啊还是用switch正常的用法吧,别钻牛角了^^
      

  5.   

    Switch(a)
    {
        case "3":
             b=3;
             break; 
        case else:
             b=12;
             break;
    }
      

  6.   

    大哥,C#里面的switch和C(C++)里的不一样,它不支持遍例,可以用goto语句实现。
    例如:Switch(a)
    {
        case "1":
             goto case "1";
        case "2":
             goto case "2"
        case "3":
             b=3;
             break;
    }
      

  7.   

    上面写错了:Switch(a)
    {
        case "1":
             goto case "2";
        case "2":
             goto case "3"
        case "3":
             b=3;
             break;
    }
      

  8.   

    简直不明白,为什嬷楼上的用非得用goto,那样程序结构不是太乱了吧,
    及差的可读性,
    Switch(a)
    {
        case "1":
        case "2":
             b=12;
             break;
        case "3":
             b=3;
             break;
    }不是可以实现所要得到的功能吗,为什嬷要搞的那嬷复杂
      

  9.   

    嘿嘿 只有 1,2 3 么
    swith(a)
    {
     case   3:
       b=3
      case else
      b=12;
    }
    简单不其实如果你是可以考虑定义成Enmu类型的
      

  10.   

    vivi8233(吐司) 你试试你的语句能运行吗
    c#与c,c++不一样的
      

  11.   

    popcorn 是正解。wyongji的 goto case 也是可以用的,但这里不需要。
    如果只有1,2,3,那么 andy1126 的也没错啊!看看 C# 的语法参考不就解决了?!
      

  12.   

    C# 程序员参考   switch请参见
    C# 关键字 | 与 C++ 比较 | if | C. 语法
    switch 语句是一个控制语句,它通过将控制传递给其体内的一个 case 语句来处理多个选择。它的形式为:switch (expression)
    {
       case constant-expression:
          statement
          jump-statement
       [default:
          statement
          jump-statement]
    }
    其中: expression 
    一个整型或字符串型表达式。 
    statement 
    控制传递给 case 或 default 时执行的嵌入语句。 
    jump-statement 
    将控制传递到 case 体外部的跳转语句。 
    constant-expression 
    根据此表达式的值将控制传递给特定的 case。 
    备注
    控制传递给 constant-expression 与 expression 匹配的 case 语句。switch 语句可以包含任意数量的 case 实例,但同一 switch 语句中的两个 case 常数不能具有相同的值。语句体从选定的语句开始执行,一直执行到 jump-statement 将控制传递到 case 体之外为止。请注意,每个块(包括最后一个块,不管它是 case 语句还是 default 语句)后都要有 jump-statement。与 C++ switch 语句不同,C# 不支持从一个 case 标签显式贯穿到另一个 case 标签。如果要使 C# 支持从一个 case 标签显式贯穿到另一个 case 标签,可以使用 goto 一个 switch-case 或 goto default。如果 expression 不匹配任何 constant-expression,则控制传递给可选的 default 标签后面的 statement。如果没有 default 标签,则控制传递到 switch 之外。示例
    // statements_switch.cs
    using System;
    class SwitchTest 
    {
       public static void Main()  
       {
          Console.WriteLine("Coffee sizes: 1=Small 2=Medium 3=Large"); 
          Console.Write("Please enter your selection: "); 
          string s = Console.ReadLine(); 
          int n = int.Parse(s);
          int cost = 0;
          switch(n)       
          {         
             case 1:   
                cost += 25;
                break;                  
             case 2:            
                cost += 25;
                goto case 1;           
             case 3:            
                cost += 50;
                goto case 1;         
             default:            
                Console.WriteLine("Invalid selection. Please select 1, 2, or 3.");            
                break;      
           }
           if (cost != 0)
              Console.WriteLine("Please insert {0} cents.", cost);
           Console.WriteLine("Thank you for your business.");
       }
    }
    输入
    2
    示例输出
    Coffee sizes: 1=Small 2=Medium 3=Large
    Please enter your selection: 2
    Please insert 50 cents.
    Thank you for your business.
    代码讨论
    在前面的示例中,整型变量 n 用于 switch case。注意还可以直接使用字符串变量 s。在这种情况下,可以以下列方式使用 switch case: 
    switch(s)
    {
       case "1":
          ...
       case "2":
          ...
    }
    虽然从一个 case 标签到另一个 case 标签的贯穿不受支持,但可以堆栈 case 标签,例如: 
       case 0:
       case 1:
          // do something; 
    请参见
    C# 关键字 | 与 C++ 比较 | if | C. 语法--------------------------------------------------------------------------------向 Microsoft 发送有关此主题的反馈© Microsoft Corporation。保留所有权利。
      

  13.   

    UP  TO 
    回复人: popcorn(米花)
      

  14.   

    建议楼主好好去学一下语法:做程序不要以为语法一无是处,学熟了语法有时可以大大简便自己的开发,仔细学一下各种高级语言中的流程控制C#(不只是C#,很多语言都是)中的流程控制一般有如下几种:
    条件语句
    if(bool position){}   else {}
    if(bool position){}   else if{}  ... else{}
    switch(object)
    {
       case value:
       ...
       default:
    }
    条件付值:a=(bool position?valuea:valueb)循环语句:
    for(){}
    foreach(){}虽然是enumerator的简写方式,但也可以算作是循环
    while{}
      

  15.   

    ...................
    是case 1: case 2:case 3: fregfsg;
    case 4:fa;
    case 5:faf;......
    除此不能简了