C# の switch ステートメントでは、複数のケースで使用される変数を最初のケースでのみ宣言するのはなぜですか?
たとえば、次の例では、「'variable' という名前のローカル変数は、このスコープで既に定義されています」というエラーがスローされます。
switch (Type)
{
case Type.A:
string variable = "x";
break;
case Type.B:
string variable = "y";
break;
}
ただし、ロジックによれば、型が の場合、初期宣言はヒットしないはずですType.B
。switch ステートメント内のすべての変数は単一のスコープ内に存在し、ロジックが処理される前に作成/割り当てられていますか?
ベストアンサー1
変数のスコープを特定のケースに限定したい場合は、そのケースを独自のブロックで囲むだけです。
switch (Type)
{
case Type.A:
{
string variable = "x";
/* Do other stuff with variable */
}
break;
case Type.B:
{
string variable = "y";
/* Do other stuff with variable */
}
break;
}