十四、流程控制之switch語句

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _14.流程控制之switch語句
{
    class Program
    {
        static void Main(string[] args)
        {
            // switch語句
            
            /**
             * switch語句可以一次將測試變量與多個值進行比較,而不是僅測試一個條件。
             * switch語句語法:
             *  switch (<testVar>)
             *  {
             *      case <comparisonVar1>:
             *          <code to execute if <testVar> == <comparisonVar1>>
             *          break;
             *      case <comparisonVar2>:
             *          <code to execute if <testVar> == <comparisonVar2>>
             *          break;
             *      ...
             *      case <comparisonVarN>:
             *          <code to execute if <testVar> == <comparisonVarN>>
             *          break;
             *      default:
             *          <code to execute if <testVar> != <comparisonVars>>
             *          break;
             *  }
             *  
             * 解釋說明:
             *  1. <testVar>中的值與每個<comparisonVarX>值(在case語句中指定),如果有一個匹配,
             *     就執行爲該匹配提供的語句。如果沒有匹配,就執行default部分中的代碼。
             *  2. 執行完每個部分中的代碼後,還需要另一個語句break。
             *  3. 在執行完一個case塊後,再執行第二個case語句是非法的。
             *  4. 每個<comarisonVarX>都必須是一個常數值(字面值或常量)。
             *  5. switch語句對case語句的數量沒有限制。
             *  
             * 可以使用三種方式防止程序流程從一個case語句轉到下一個case語句:
             * 1. break語句將中斷switch語句的執行,而執行該結構後面的語句。
             * 2. return語句將中斷當前函數的運行,而不是僅中斷switch結構的執行。
             * 3. 可以使用goto語句跳轉到其他case語句或跳出switch結構。
             */
             
            // 版本1
            {
                int WeekOfDay;
                
                Console.Write("(Ver1)Enter a week of day: ");
                WeekOfDay = Convert.ToInt32(Console.ReadLine());
                
                switch (WeekOfDay)
                { 
                    case 1:
                        Console.WriteLine("Today is Monday.");
                        break;
                    case 2:
                        Console.WriteLine("Today is Tuesday.");
                        break;
                    case 3:
                        Console.WriteLine("Today is Wednesday.");
                        break;
                    case 4:
                        Console.WriteLine("Today is Thursday.");
                        break;
                    case 5:
                        Console.WriteLine("Today is Friday.");
                        break;
                    case 6:
                    case 7:
                        Console.WriteLine("Today is Weekend.");
                        break;
                    default:
                        return;
                }
            }
            
            // 版本2
            {
                int WeekOfDay;
                
                Console.Write("(Ver2)Enter a week of day: ");
                WeekOfDay = Convert.ToInt32(Console.ReadLine());
                
                switch (WeekOfDay)
                {
                    case 1:
                        Console.WriteLine("Today is Monday.");
                        break;
                    case 2:
                        Console.WriteLine("Today is Tuesday.");
                        break;
                    case 3:
                        Console.WriteLine("Today is Wednesday.");
                        break;
                    case 4:
                        Console.WriteLine("Today is Thursday.");
                        break;
                    case 5:
                        Console.WriteLine("Today is Friday.");
                        break;
                    case 6:
                        goto case 7;
                    case 7:
                        Console.WriteLine("Today is Weekend.");
                        return;
                    default:
                        goto End;
                }
                
            End:
                Console.WriteLine("The week of day is unknown.");
            }
            
            Console.ReadKey();
        }
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章