C# の switch ステートメントでの変数宣言 [重複] 質問する

C# の switch ステートメントでの変数宣言 [重複] 質問する

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;
}

おすすめ記事