2015-02-05 47 views
6

我遇到了以下代碼的問題,看起來break語句是好的,但我看不見東西。控制不能從一個案例標籤('默認:')通過C#中的另一個落入#

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

namespace Switch 
{ 
class swtich 
{ 
    static void Main(string[] args) 
    { 
     string input; int num; 
     Console.WriteLine("Enter a number from 0-6: "); 
     input = Console.ReadLine(); 
     num = int.Parse(input); 
     switch (num) 
     { 
      case 0: 
       Console.WriteLine("Sunday"); 
       break; 
      case 1: 
       Console.WriteLine("Monday"); 
       break; 
      case 2: 
       Console.WriteLine("Tuesday"); 
       break; 
      case 3: 
       Console.WriteLine("Wednesday"); 
       break; 
      case 4: 
       Console.WriteLine("Thursday"); 
       break; 
      case 5: 
       Console.WriteLine("Friday"); 
       break; 
      case 6: 
       Console.WriteLine("Saturday"); 
       break; 
      default: 
       Console.WriteLine("Invalid input"); 
     } 
    } 
} 
} 

這是我得到 控制不能從一個case標籤(「默認:」)通過屬於錯誤另一個

+0

除了默認的最終錯誤檢查,你可以用一個單一的:Console.WriteLine((DayOfWeek)num)代替整個switch語句;' –

回答

22

將一個break;default:情況後。

... 
    case 6: 
    Console.WriteLine("Saturday"); 
    break; 
    default: 
    Console.WriteLine("Invalid input"); 
    break; 
} 

default情況下是在到底是不是必需的,所以你必須包括break就像在其他地方,以避免此警告。

+0

哦謝謝我忘記了那個 – user2005549

12

與C,C++或Java中的switch語句不同,C#不允許case語句通過,這包括default case語句。在您的default案件後,您必須添加break

default: 
    Console.WriteLine("Invalid Input"); 
    break; // this is required 

正如@AlexeiLevenkov指出,break不一定需要,但是,需要某種一種防止到達構造末尾陳述的,如returnbreakgoto case或。

+3

請注意,「break」不需要成爲塊的一部分 - 任何阻止到達塊結束的構造(如'return')將按規範中的規定 - [switch語句(C#)](https://msdn.microsoft.com /v-vs/library/aa664749(v=vs.71).aspx),所以在這種情況下'return'可以用來代替'break'。 –

相關問題