Secondo Visual Studio 2015 la prima riga di codice nel primo case
la dichiarazione è irraggiungibile ma non capisco perché la seconda riga di codice nella stessa case
la dichiarazione non è contrassegnata come irraggiungibile e tutto il codice in default
la dichiarazione è raggiungibile. VS è semplicemente stupido o mi manca qualcosa qui?
private static void LogToITSupport(string ErrorType)
{
var Email = new MailMessage();
Email.To.Add("");
Email.From = new MailAddress("");
switch ("ErrorType")
{
case "Database Connection":
Email.Subject = "JobSight Error, unable to connect to database.";
Email.Body = "JobSight is unable to connect to the JobSight database, this could indicate the databse is dow nor there is a server problem. Please investigate.";
break;
default:
Email.Subject = "JobSight has encountered an unknown error.";
Email.Body = "JobSight has encountered an unknown error and thinks that IT should fix it. Good Luck.";
break;
}
var Client = new SmtpClient("");
Client.Send(Email);
}
risposte:
4 per risposta № 1In risposta alla tua domanda reale. Stai accendendo una stringa letterale "ErrorType" e le tue opzioni sono "Connessione DataBase" o Qualsiasi altra cosa.
Dato che il compilatore sta esaminando una stringa letterale, sa che DataBase Connection non sarà mai il caso, quindi è irraggiungibile.
Se ad esempio hai cambiato il tuo passaggio su"DataBase Connection" noteresti che la prima riga sarebbe ok, ma in questo caso l'errore verrebbe visualizzato perché il compilatore sa che Database Connection è l'unica cosa che può essere raggiunta.
Con l'uso dell'interruttore della variabile attuale (ErrorType) il compilatore non sa cosa verrà passato e quindi sia il caso che l'impostazione predefinita sono probabilmente raggiungibili.
Come indicato da altri, rimuovere le virgolette perché si desidera attivare la stringa che contiene la variabile ErrorType.
4 per risposta № 2
La stringa letterale "ErrorType"
non può mai essere uguale a "Database Connection"
quindi il compilatore te lo sta solo dicendo.
Potresti voler usare il ErrorType
variabile invece:
switch (ErrorType)
{
case "Database Connection":
Email.Subject = "JobSight Error, unable to connect to database.";
Email.Body = "JobSight is unable to connect to the JobSight database, this could indicate the databse is dow nor there is a server problem. Please investigate.";
break;
default:
Email.Subject = "JobSight has encountered an unknown error.";
Email.Body = "JobSight has encountered an unknown error and thinks that IT should fix it. Good Luck.";
break;
}
Ora se il ErrorType
variabile uguale a "Database Connection"
quindi verrà eseguita la prima istruzione, altrimenti quella predefinita. E questa valutazione verrà eseguita in fase di esecuzione in base al valore della variabile stringa.