为什么下面的代码会被编译?我希望它会抱怨foo
没有在第二个案例分支中声明。编译器是否处理声明,使其处于所有情况的范围内?为什么在其他情况下在一个case声明中声明的变量在范围内?
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;
}
}
}
}
可能希望看到http://stackoverflow.com/questions/11199338/using-a-switch-statement-to-set-the-value-of-one-particular-variable-only – nawfal