这个问题让我想起了我脑海中关于 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 incase 1
并在其中看到它case 2
?如果从来没有两种情况一起发生,那么为什么要在两者中都看到对象呢?