12

重複の可能性:
c# の switch ステートメントでの変数宣言

私はいつも疑問に思っていました:

私が書くとき:

 switch (temp)
        {
            case "1":
                int tmpInt = 1;
                break;
           
        }

case "1":領域には、実行されるコードの領域があります (ブレークまで)

今 、

上からの滝は、例に入ることができませcase of 2ん:

  switch (temp)
        {
            case "1":
                int tmpInt = 1;
             
            case "2":
             
                break;
        }

//エラー : ブレーク リターンがありません。

だから私は、実行の異なる領域があると仮定します(ケース....ブレーク)。

なぜこのエラーが表示されるのですか?

ここに画像の説明を入力

//競合変数 tmpInt は以下で定義されています。

psこれはばかげた質問ですが、それでも興味深いです。

4

5 に答える 5

1

これは、エラー行にカーソルを合わせたときにインテリセンスが通知するのと同じように、同じスコープ内で同じ名前のローカル変数を宣言しているために発生します。

これが、それぞれの場合に実際に中括弧を使用する必要がある理由です。

switch(var)
{
    case 1: 
    {
        int temp=0;
    } break;
    case 2:
    {
        int temp=0;
    } break;
}

これにより、「問題」が修正されます(これは実際には問題ではなく、スコープの動作方法です)。

于 2012-07-10T08:59:31.893 に答える
0

つまり、同じ変数を 2 回作成しています。int tmpInt = 1;

于 2012-07-10T08:52:13.630 に答える