This question mi ha ricordato di un vecchio domanda senza risposta nella mia mente su interruttore:strano portata variabile in istruzione switch
int personType = 1;
switch (personType)
{
case 1:
Employee emp = new Employee();
emp.ExperienceInfo();
break;
case 2:
Employee emp = new Employee();
//Error: A local variable named 'emp' is already defined in this scope
emp.ManagementInfo();
break;
case 3:
Student st = new Student();
st.EducationInfo();
break;
default:
MessageBox.Show("Not valid ...");
}
il motivo per cui è emp riconosciuto nel 'caso 2'? in C++ (se non sbaglio) potremmo utilizzare più casi insieme, ma in C# che è impossibile e dovremmo chiudere case 1
con pausa in modo che il seguente codice sembra giusto in C++ e sbagliato in C#:
case 1:
case 2:
SomeMethodUsedByBothStates();
Quando non possiamo avere un comportamento del genere quindi perché dovremmo essere in grado di dichiarare emp in case 1
e vederlo in case 2
? Se mai due casi accadono insieme, quindi perché l'oggetto dovrebbe essere visto in entrambi?
+1. Ho imparato qualcosa di nuovo proprio ora :) grazie –