This question przypomniał mi stare pytanie bez odpowiedzi w myślach o przełączniku:dziwne zakres zmienny w instrukcji 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 ...");
}
dlaczego EMP uznanej w „przypadku 2”? w C++ (jeśli się nie mylę) możemy korzystać z wielu przypadków razem, ale w języku C#, który jest niemożliwe i trzeba zamknąć case 1
z przerwą więc następujący kod wydaje się w C++, a co złe w C#:
case 1:
case 2:
SomeMethodUsedByBothStates();
Kiedy nie możemy mieć takiego zachowania, więc dlaczego mielibyśmy być w stanie zadeklarować emp w case 1
i zobaczyć go w case 2
? Jeśli nigdy dwa przypadki nie zdarzają się razem, dlaczego obiekt powinien być widoczny w obu?
+1. Nauczyłem się teraz czegoś nowego :) dzięki –