Dlaczego następujący kod się kompiluje? Spodziewałbym się, że będzie narzekać na to, że foo
nie zostanie zadeklarowany w drugim oddziale. Czy kompilator obsługuje deklarację taką, że jest w zasięgu dla wszystkich przypadków?Dlaczego zmienne są zadeklarowane w jednym przypadku w zakresie dla innych przypadków?
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;
}
}
}
}
chcieć zobaczyć http://stackoverflow.com/questions/11199338/using-a-switch-statement-to-set-the-value-of-one-particular-variable-only – nawfal