相关疑难解决方法(0)

C#switch语句中的变量声明

为什么在C#switch语句中,对于在多种情况下使用的变量,您只在第一种情况下声明它?

例如,以下引发错误"已在此范围中定义名为'variable'的局部变量".

switch (Type)
{
    case Type.A:
            string variable = "x";
                break;
    case Type.B:
            string variable = "y";
                break;
}
Run Code Online (Sandbox Code Playgroud)

但是,根据逻辑,如果类型为,则不应该触发初始声明Type.B.switch语句中的所有变量是否都存在于单个作用域中,是否在处理任何逻辑之前创建/分配它们?

c# switch-statement

117
推荐指数
4
解决办法
5万
查看次数

C#中的案例声明块级声明空间

有没有理由我错过了case语句中的块不被视为块级声明空间?

我尝试时不断收到错误(变量已经声明)

case x:
  var someVariable = 42;
break;
case y: 
   var someVariable = 40;
break;
Run Code Online (Sandbox Code Playgroud)

但我能做到

case x:
   try{var someVariable = 42;}catch{} 
break;
case y: 
    try{var someVariable = 40;}catch{}
break;
Run Code Online (Sandbox Code Playgroud)

如果C#允许通过语句,那就没有意义,但事实并非如此,我想不出你可以在case语句中声明变量并在该块之外使用它的场景.

c# language-design switch-statement

7
推荐指数
3
解决办法
1679
查看次数

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

可能重复:
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)

c# switch-statement variable-initialization

3
推荐指数
1
解决办法
157
查看次数