C#中的switch语句中,为什么对于在多个case中使用的变量,只在第一个case中声明就可以了呢?
例如,以下代码会报错:"在此范围内已经定义了名为“variable”的局部变量"。
switch (Type)
{
case Type.A:
string variable = "x";
break;
case Type.B:
string variable = "y";
break;
}
然而,根据逻辑,如果类型为Type.B
,则不应该命中初始声明。在switch语句中的所有变量是否都存在于单个作用域中,并且它们是在任何逻辑被处理之前创建/分配的?
switch(Type) { case Type.A: string variable = "x"; break; case Type.B: variable = "y"; break; }
- giamminstring variable = null; switch (Type) { case Type.A: variable = "x"; break; case Type.B: variable = "y"; break; }
- giammincase x:{...}
很丑陋。在switch之前声明变量更加丑陋。我认为这是C#设计中的一个缺陷。 - Jeroen van Langen