область видимости нечетной переменной в операторе 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 ...");
}
почему emp признается вдело 2 '? в C ++ (если я не ошибаюсь) мы могли бы использовать несколько случаев вместе, но в C # это невозможно, и мы должны закрытьcase 1
с break, поэтому следующий код кажется правильным в C ++ и неправильным в C #:
case 1:
case 2:
SomeMethodUsedByBothStates();
Когда мы не можем иметь такое поведение, так почему мы должны быть в состоянии объявить emp вcase 1
и увидеть это вcase 2
? Если никогда не бывает двух случаев вместе, то почему объект должен быть виден в обоих?