¿Por qué se compila el siguiente código? Esperaría que se queje de que foo
no se haya declarado en la segunda sucursal. ¿El compilador maneja la declaración de modo que esté dentro del alcance de todos los casos?¿Por qué las variables que se declaran en una declaración de caso están en el alcance para otros casos?
using System;
namespace Scratch
{
class Scratch
{
public static void Main()
{
var x = 2;
switch (x)
{
case 1:
var foo = "one";
Console.Out.WriteLine(foo);
break;
case 2:
foo = "two"; // is foo in scope here?
Console.Out.WriteLine(foo);
break;
}
}
}
}
que desee ver http://stackoverflow.com/questions/11199338/using-a-switch-statement-to-set-the-value-of-one-particular-variable-only – nawfal