Visual C#2005快速入門之switch語句
2006/12/27 20:09:36

      某些時候,在嵌套使用if語句時,所有if語句看起來都非常相似,因為它們都在對一個完全相同的表達式進行求值,惟一的區別是每個if語句都將表達式的結果與一個不同的值進行比較。例如:

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

    if (day == 0)
 dayName = "Sunday";
else if (day == 1)
 dayName = "Monday";
else if (day == 2)
 dayName = "Tuesday";
else if (day == 3)
 ...
else
 dayName = "Unknown";
  在這些情況下,通常需要將嵌套的if語句改寫為一個switch語句,使程序更有效、更容易懂。

  理解switch語句的語法

  switch語句的語法如下(switch,case和default是關鍵字):

    switch ( controllingExpression )
{
 case constantExpression :
  statements
  break;
 case constantExpression :
  statements
  break;
 ...
 default :
  statements
  break;
}
  controllingExpression(控制表達式)只求值一次。然后,從其constantExpression值等于controllingExpression值的case開始,它下方的所有語句都會一直運行,直到遇到一個break為止。隨后,switch語句將結束,程序從switch結束大括號之后的第一個語句繼續執行,并忽略其他case。

  假如任何一個constantExpression值都不等于controllingExpression的值,就運行可選標簽default之下的語句。

  注意 假如controllingExpression的值和任何一個case標簽都不匹配,同時沒有發現一個default標簽,程序會跳過整個switch語句,從它的結束大括號之后的第一個語句繼續執行。

  例如,前面的嵌套if語句可以改寫為以下switch語句:

    switch (day)
{
 case 0 :
  dayName = "Sunday";
  break;
 case 1 :
  dayName = "Monday";
  break;
 case 2 :
  dayName = "Tuesday";
  break;
 ...
 default :
  dayName = "Unknown";
  break;
}
  遵守switch語句規則

  switch語句非常有用,但在使用時必須謹慎。所寫的任何switch語句都必須遵循以下規則:

  只能針對基本數據類型使用switch,這些類型包括int和string等待。對于其他類型,則必須使用if語句。

  case標簽必須是常量表達式(constantExpression),如42或者"42"。如果需要在運行時計算case標簽的值,必須使用if語句。

  case標簽必須是惟一性的表達式;也就是說,不允許兩個case具有相同的值。

  可以連續寫下一系列case標簽(中間不能間插額外的語句),從而指定自己希望在多種情況下都運行相同的語句。如果像這樣寫,那么最后一個case標簽之后的代碼將適用于所有case。然而,假如一個標簽關聯了一個或多個語句,又沒有使用break來跳出,那么執行就不能貫穿到后續的標簽,而且編譯器會報告一個錯誤。例如:

    switch (trumps)
{
 case Hearts :
 case Diamonds : // 允許貫穿 — 標簽之間無額外代碼
  color = "Red"; // 針對Hearts和Diamonds這兩種情況都會執行的代碼
  break;
 case Clubs :
  color = "Black";
 case Spades : // 出錯 — 標簽之間有額外代碼,而且沒有使用break來跳出
  color = "Black";
  break;
}
  注意 break語句是用來阻止貫穿的最常見的方式,但也可以用一個return語句或者一個throw語句來替代它。throw語句的詳情將在以后討論。

   
  不準貫穿

  由于C#存在不準貫穿(fall through)的規則,所以可以自由地安排一個switch語句的各個區域,而不至于影響其含義(其中包括default標簽,它傳統意義上是最后一個標簽,但并非一定如此)。

  C和C++程序員要注意的是,在使用C#編程時,必須為switch語句

下一頁
返回列表
返回首頁 主站蜘蛛池模板: 黄色一级毛片看一级毛片| 啊~怎么又加了一根手指| japanese国产在线看| 日本特黄特色aaa大片免费| 亚洲国产综合精品中文第一区| 精品乱子伦一区二区三区| 国产午夜激无码av毛片| 窝窝视频成人影院午夜在线| 在线观看国产成人av片| 一本色道久久综合狠狠躁篇| 日本动漫打扑克动画片樱花动漫| 亚洲专区欧美专区| 正在播放pppd| 你懂的在线播放| 精品福利视频一区二区三区| 国产免费无码av片在线观看不卡| 五月婷婷一区二区| 国产精品美女久久久久AV福利| eeuss在线兵区免费观看| 成人影院久久久久久影院| 久久亚洲精品人成综合网| 极品粉嫩嫩模大尺度无码视频| 亚洲欧美成aⅴ人在线观看| 亚洲一区二区三区91| 色老头永久免费网站| 国产成人黄色小说| 一级一级女人真片| 国产视频一区二区三区四区 | 国产福利在线小视频| 91久久青青草原线免费| 天堂网www中文在线| 一本色道久久88—综合亚洲精品 | 全彩无翼口工漫画大全3d| 香焦视频在线观看黄| 国产精品久久久久久久伊一| A毛片毛片看免费| 少妇人妻在线视频| 两根手指就抖成这样了朝俞| 新婚张燕被两个局长| 久久国产免费观看精品3| 最强yin女系统白雪 |