C# switch語句

2019-10-16 23:17:23

一個switch語句允許使用一個變數測試來相對於一個值的列表。每個值都稱為一種情況(case),並且每個switch情況都檢查是否匹配變數的值。

語法

C# 中的switch語句的語法如下:

switch(expression) {
   case constant-expression  :
      statement(s);
      break; /* optional */
   case constant-expression  :
      statement(s);
      break; /* optional */

   /* you can have any number of case statements */
   default : /* Optional */
   statement(s);
}

以下規則適用於switch語句:

  • switch語句中使用的表示式(expression)必須具有一個整數或列舉型別,或者是類型別,該類具有單個轉換函式為整數或列舉型別。
  • 可以在switch語句內有任意數量的case語句。 每個case語句後跟要比較的值和冒號。
  • case語句中的常數表示式必須與switch中變數的資料型別相同,它必須是常數或字面值。
  • 當接通的變數等於其中一個case語句中的值時,這個case語句中程式碼塊將被執行,直到達到break語句。
  • 當達到break語句時,switch語句塊終止,並且控制流程跳轉到switch語句之後的下一行。
  • 不是每個case都需要包含break語句(可選)。 如果不沒有break語句,控制流程將執行到在後續case語句中,直至遇到break語句。
  • switch語句可以具有可選的default語句,必須出現在switch語句的末尾。 預設情況下可以用於在沒有任何情況為真時執行任務。在default語句不需要使用break語句。

流程圖

範例程式碼

using System;
namespace DecisionMaking
{
    class Program
    {
        static void Main(string[] args)
        {
            /* local variable definition */
            char grade = 'B';

            switch (grade)
            {
                case 'A':
                    Console.WriteLine("Excellent!");
                    break;
                case 'B':
                case 'C':
                    Console.WriteLine("Well done");
                    break;
                case 'D':
                    Console.WriteLine("You passed");
                    break;
                case 'F':
                    Console.WriteLine("Better try again");
                    break;
                default:
                    Console.WriteLine("Invalid grade");
                    break;
            }
            Console.WriteLine("Your grade is  {0}", grade);
            Console.ReadLine();
        }
    }
}

當編譯和執行上述程式碼時,會產生以下結果:

Well done
Your grade is B