область видимости нечетной переменной в операторе 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? Если никогда не бывает двух случаев вместе, то почему объект должен быть виден в обоих?

Ответы на вопрос(4)

Ваш ответ на вопрос