この質問は、スイッチについて頭の中にある古い未回答の質問を思い出させました。
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 ...");
}
「ケース 2」で emp が認識されるのはなぜですか? C++ では (私が間違っていなければ) 複数のケースを一緒に使用できますが、C# ではそれは不可能でありcase 1
、break で閉じる必要があるため、次のコードは C++ では正しく、C# では間違っているように見えます。
case 1:
case 2:
SomeMethodUsedByBothStates();
そのような振る舞いができないのに、なぜ emp を宣言してcase 1
で見ることができるのcase 2
でしょうか? 2 つのケースが同時に発生しない場合、オブジェクトが両方で表示される必要があるのはなぜですか?