Вьющиеся фигурные скобки не требуются, но они могут пригодиться, чтобы ввести новое пространство объявления .Насколько я знаю, это поведение не изменилось с C # 1.0.
Эффект от их пропуска состоит в том, что все переменные, объявленные где-то внутри оператора switch
, видны из их точки объявления во всех ветвях case.
См. Также пример Эрика Липперта (случай 3 в посте):
Четыре странности переключателя
Пример Эрика:
switch(x)
{
case OneWay:
int y = 123;
FindYou(ref y);
break;
case TheOther:
double y = 456.7; // illegal!
GetchaGetcha(ref y);
break;
}
Это не компилируется, потому что int y
и double y
находятся в одном и том же пространстве объявления, введенном оператором switch
.Вы можете исправить ошибку, разделив пространства объявлений с помощью фигурных скобок:
switch(x)
{
case OneWay:
{
int y = 123;
FindYou(ref y);
break;
}
case TheOther:
{
double y = 456.7; // legal!
GetchaGetcha(ref y);
break;
}
}