1

次のコードを使用します。

case "GETSITES":
case "SITESETUP":
    MessageBox.Show("Help! I am suffering from the Air-Conditioned Nightmare!!!");
    // ...

MessageBox.Showスイッチの値が"GETSITES"またはのいずれかで実行されます"SITESETUP"か?

またはスイッチの値が"SITESETUP"?

切れ目がないので"GETSITES"、あると思いますが、よくわかりません。


アップデート

私は私の質問を次のように表現するべきだったと思います:

これら 2 つのコード フラグメントは意味的に同等ですか?

  • フラグメント 1

    case 0:
    case 1:
        // bla bla bla;
        break;
    
  • フラグメント 2 (疑似コード)

    case 0, 1:
        // bla bla bla;
        break;
    
4

3 に答える 3

7

あなたが説明しているのは、同じケースに2つのラベルがあることです。C# ではこれが可能です。ただし、C で許可されているのと同じ方法で次の case ステートメントに進むことはできません。つまり、ラベルにコードを含めることはできず、次の case ステートメントに進むことはできません。これは禁止されており、コンパイル エラーが発生します。

于 2013-03-01T18:23:14.007 に答える
2

テストに基づいて、次のことができます。

switch(i)
{
    case 0:
    case 1:
    case 2:
        doSomething();
        break;
    default:
        doNothing();
        break;
}

ただし、次のことはできません。

switch(i)
{
   case 0:
      doSomething();
   case 1:
      doSomethingElse();
      break;
   default:
      doNothing();
      break;
}

したがって、答えは「はい」です。複数のケースを積み重ねることはできますが、あるケースから別のケースに制御を実行させることはできません。

于 2013-03-01T18:26:06.537 に答える