2015-02-05 8 views
6

Ho problemi con il seguente codice sembra che l'istruzione break sia buona ma non potrei vedere qualcosa.Il controllo non può passare da un'etichetta di caso ('default:') a un altro in 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"); 
     } 
    } 
} 
} 

questo è l'errore che sto ottenendo di controllo non può cadere attraverso da un'etichetta caso ('default:') ad un altro

+0

Fatta eccezione per il controllo degli errori finale in difetto, si può solo sostituire quella intera istruzione switch con un singolo: (num (DayOfWeek)) 'Console.WriteLine;' –

risposta

22

Mettere un break; dopo la vostra default: caso.

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

Il default caso non è richiesto di essere alla fine, in modo da avere a includere un break proprio come in ogni altro per evitare questo avvertimento.

+0

oh grazie ho dimenticato che uno – user2005549

12

A differenza delle istruzioni switch in C, C++ o Java, C# non consente l'inoltro di istruzioni caso, Ciò include l'istruzione case default. È necessario aggiungere break dopo il caso default.

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

Come @AlexeiLevenkov sottolineato, break non è necessariamente richiesto, tuttavia, è richiesto un certo tipo di dichiarazione che impedisce di raggiungere la fine del costrutto, come return, break o goto case.

+3

nota che "pausa" non è richiesto che faccia parte del blocco - qualsiasi costrutto che impedisca di raggiungere la fine del blocco (come 'return') dovrebbe fare come specificato nelle specifiche - [L'istruzione switch (C#)] (https://msdn.microsoft.com /en-us/library/aa664749(v=vs.71).aspx), così 'return' può essere usato al posto di 'break' in questo caso particolare. –

Problemi correlati