如何在没有声明的情况下使用switch语句中的这个变量?

Tra*_*s J 3 c# switch-statement variable-initialization

可能重复:
C#switch变量初始化:为什么此代码不会导致编译器错误或运行时错误?

在这个switch语句中(我惊讶地编译并执行而没有错误),在case 2中没有声明变量,而case 1从不执行.这有效吗?如何在不声明的情况下使用变量?

switch(2){
 case 1:
  string something = "whatever";
  break;
 case 2:
  something = "where??";
  break;
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*oud 5

那是因为一个switch语句跨越了案例.因此,当switch最初被处理的语句,它定义了一个名为的变量something,并会对它的默认值......在这种情况下null.

更准确地说,当生成IL时,变量在范围内可用case于其定义或低于其定义.因此,如果在第二个中声明了变量,那么case它在第一个中不可用,case但在第三个中可用case.