为什么';tc#允许在不同的case块中为switch语句声明相同编号的变量吗?

为什么';tc#允许在不同的case块中为switch语句声明相同编号的变量吗?,c#,.net,switch-statement,C#,.net,Switch Statement,可能重复: 例如: string danger; switch ( this.Type ) { case Warfare.Nuclear: case Warfare.Biological: case Warfare.Chemical: danger = "deadly"; break; case Warfare.Air: string threat = "major" ...

可能重复:

例如:

string danger;
switch ( this.Type )
{
    case Warfare.Nuclear:
    case Warfare.Biological:
    case Warfare.Chemical:
        danger = "deadly";
        break;

    case Warfare.Air:
        string threat = "major"

        ...

        break;

    case Warfare.Ground:
        string threat = "medium"

        ...

        break;
}

为什么我不能在每个变量中定义具有相同名称的局部变量,而不必使用不同的名称或在switch语句外部声明变量,而switch语句将不会在其外部使用。

case语句不定义变量范围。您可以在case语句中的大括号中添加一些内容来定义新的变量范围。

将case块括在{}中以缩小同名变量的范围。

请参见:@Kevin-谢谢。埃里克·利珀特总是知道。我想你不会对编译器团队期望太低的