Hay que tener cuidado en cómo se piensa en la declaración switch
aquí. No hay ninguna creación de ámbitos de variable pasando en absoluto, de hecho. No permita el hecho de que solo porque el código dentro de los casos se sangra porque reside dentro del alcance de un niño.
Cuando se compila un bloque de conmutadores, las etiquetas case
simplemente se convierten en etiquetas, y la instrucción goto
correspondiente se ejecuta al inicio de la instrucción de conmutación dependiendo de la expresión de conmutación. De hecho, puede usar manualmente las declaraciones goto
para crear situaciones "fallidas" (que C# admite directamente), como sugiere the MSDN page.
goto case 1;
Si quería específicamente para crear ámbitos para cada caso dentro del bloque switch
, se puede hacer lo siguiente.
...
case 1:
{
string x = "SomeString";
...
break;
}
case 2:
{
string x = "SomeOtherString";
...
break;
}
...
Esto requiere que redeclare la variable x
(de lo contrario recibirá un error del compilador). El método de determinación del alcance de cada uno (o al menos algunos) puede ser bastante útil en ciertas situaciones, y ciertamente lo verá en el código de vez en cuando.
solo necesita poner la cadena x = "SomeOtherString"; entonces funcionará. el, no puede usar la variable del caso 1 en el caso 2. Se producirá un error fuera del alcance. –
asegúrese de que el caso 2 requiera la modificación del código. –
@Syed - eso no es correcto. NO se produce ningún error con este código. –