Можно создать дубликат:
Case Statement Block Level Declaration Space in C#Почему C# разрешает объявление переменных с одинаковым числом внутри разных блоков case для операторов switch?
Например:
string danger;
switch (this.Type)
{
case Warfare.Nuclear:
case Warfare.Biological:
case Warfare.Chemical:
danger = "deadly";
break;
case Warfare.Air:
string threat = "major"
...
break;
case Warfare.Ground:
string threat = "medium"
...
break;
}
Почему я не могу просто определить локальные переменные с тем же именем в каждом, без использования разные имена или объявление переменной вне оператора switch, которая в любом случае не будет использоваться вне нее.
увидеть это: http://stackoverflow.com/questions/1074589/case-statement-block-level-declaration-space -in-c – kemiller2002
@Kevin - Спасибо. Эрик Липперт всегда знает. Думаю, вы не ожидали бы меньше от команды компилятора. – kbrimington
См. Также http://blogs.msdn.com/b/ericlippert/archive/2009/08/13/four-switch-oddities.aspx –