c#中的switch case语句有三种结构,具体形式如下图所示:

(1)Switch的第一种结构:(如例1)

switch(i)

case 1:

//

break;

case2:

//

break;

例1

  1. namespace Switch  
  2. {  
  3.     class Program  
  4.     {  
  5.         static void Main(string[] args)  
  6.         {  
  7.             int i = 2;  
  8.             switch(i)  
  9.             {  
  10.                 case 2:  
  11.                     Console.WriteLine("你真2!");   
  12.                     Console.WriteLine("你真有才!");  
  13.                     break;  
  14.                 case 4:  
  15.                     Console.WriteLine("你去死吧!");  
  16.                     break;  
  17.                 case 8:  
  18.                     Console.WriteLine("发发发!");  
  19.                     break;  
  20.             }  
  21.             Console.ReadKey();  
  22.         }  
  23.     }  
  24. }  

(2)Switch的第二种结构:

switch(i)

case 1:

//

break;

case2:

//

break;

default:

//

break;

例2

  1. namespace Switch  
  2. {  
  3.     class Program  
  4.     {  
  5.         static void Main(string[] args)  
  6.         {  
  7.             int i = 9;  
  8.             switch(i)  
  9.             {  
  10.                 case 2:        //相当于if(if==2)  
  11.                     Console.WriteLine("你真2!");   
  12.                     Console.WriteLine("你真有才!");  
  13.                     break;     //C#中必须写break  
  14.                 case 4:  
  15.                     Console.WriteLine("你去死吧!");  
  16.                     break;  
  17.                 case 8:  
  18.                     Console.WriteLine("发发发!");  
  19.                     break;  
  20.                 default:       //相当于if语句的else  
  21.                     Console.WriteLine("你输入的{0}没有意义",i);  
  22.                     break;  
  23.             }  
  24.             Console.ReadKey();  
  25.         }  
  26.     }  
  27. }  

注意:C#中的switch语句必须写break,不写不行,但有一种情况除,合并了case情况,可以不写break。(如例3):

Switch的第三种结构:合并了case情况,以省略break.

switch(i)

case 1:

case2:

//

break;

例3:

  1. namespace Switch  
  2. {  
  3.     class Program  
  4.     {  
  5.         static void Main(string[] args)  
  6.         {  
  7.             int i = 200;   
  8.             switch(i)  
  9.             {  
  10.                 case 2:        //相当于if(if==2)  
  11.                     Console.WriteLine("你真2!");   
  12.                     Console.WriteLine("你真有才!");  
  13.                     break;     //C#中必须写break  
  14.                 case 4:  
  15.                     Console.WriteLine("你去死吧!");  
  16.                     break;  
  17.                 case 8:  
  18.                     Console.WriteLine("发发发!");  
  19.                     break;  
  20.                 /* 
  21.                 case 100: 
  22.                     Console.WriteLine("你输入的是整钱!"); 
  23.                     Console.WriteLine("你真有钱"); 
  24.                     break; 
  25.                 case 200: 
  26.                     Console.WriteLine("你输入的是整钱!"); 
  27.                     Console.WriteLine("你真有钱"); 
  28.                     break; 
  29.                 */  
  30.   
  31.   
  32.                 //上面的代码等同于下面的代码  
  33.                 case 100:  
  34.                 case 200:      //相当于if(i=100||i=200),唯一一个case后不用break的情况  
  35.                     Console.WriteLine("你输入的是整钱!");  
  36.                     Console.WriteLine("你真有钱");  
  37.                     break;  
  38.   
  39.   
  40.                 default:       //相当于if语句的else  
  41.                     Console.WriteLine("你输入的{0}没有意义",i);  
  42.                     break;  
  43.             }  
  44.             Console.ReadKey();  
  45.         }  
  46.     }  
  47. }  

注意:switch语句中case 的值只能是用2,4,"aaa" 等常量,不能是变量、表达式。 (如例4)

例4

  1. namespace Switch  
  2. {  
  3.     class Program  
  4.     {  
  5.         static void Main(string[] args)  
  6.         {  
  7.             string s1 = Console.ReadLine();  
  8.             int i = Convert.ToInt32(s1);  
  9.             int k = 10;   
  10.             switch(k)  
  11.             {  
  12.                 case i:   //错误:case中值只能用2,4,"aaa" 等常量,不能写变量   
  13.                     Console.WriteLine("你输入的和程序假定的一样!");   
  14.                     break;     //C#中必须写break     
  15.             }  
  16.             Console.ReadKey();  
  17.         }  
  18.     }  
  19. }  


总结:switch语句和if语句的区别:

     

    ● 大于等于(>=)、小于等于(<=)的判断用if语句,而等于(=)的判断用switch语句

    ● switch语句中的case类似于if…else…else if…else,但是离散值的判断。

       (离散值的判断自认为是等于情况的判断)。

    ● switch一般都可以及用if重写,但是if不一定能用switch重写(如例2)。

    ● 不要忘了break.C#中break不写是不行的,除了合并case的情况(如例3)。

    ● case 中的值必须是常量,不能是变量、表达式(如例4)。


本文转载:CSDN博客