1. ホーム
  2. c#

[解決済み] C#のswitch文での変数宣言 [重複]について

2022-05-17 17:16:37

質問

C#のswitch文では、複数のケースで使用する変数に対して、最初のケースでしか宣言しないのはなぜですか?

例えば、次のようにすると、"A local variable named 'variable' is already defined in this scope"というエラーがスローされます。

switch (Type)
{
    case Type.A:
            string variable = "x";
                break;
    case Type.B:
            string variable = "y";
                break;
}

しかし、ロジック上、初期宣言は型が Type.B . switch ステートメント内のすべての変数は 1 つのスコープに存在し、ロジックが処理される前に作成/割り当てられるのですか?

どのように解決するのですか?

変数の全体的なスコープが関係していると思いますが、スイッチレベルで定義されているブロックレベルのスコープです。

個人的には、あなたの例でスイッチ内の何かに値を設定する場合、それが本当に有益であるためには、とにかくスイッチの外側でそれを宣言したいと思うでしょう。