2012-03-16 26 views
0

私は次のswitch文を持っていて、文字列がfoo = "FOO"の場合は、2つのMessageBoxesがトリガされます。しかし、私は ""が表示され、 "Cat"ではありません。何らかの理由で、ケースは最初の文を実行してから、それ自体を中断します。何故ですか?なぜC#switchは最初の文だけを実行するのですか?

switch(foo) 
{ 
    case "FOO" 
     MessageBox.Show("Dog"); 
     MessageBox.Show("Cat"); 
     break; 
    case ... 
    case ... 
} 
+3

そのソリューションが、あなたが追加するのを忘れた場合、私は知らない後":"を追加するのを忘れ! –

+0

MessageBoxに表示するメッセージは何ですか? – Coder

+0

コードをテストしたところ、* Dog *と* Cat *の両方が表示されていました。 – Jason

答えて

4

再生できません。たとえば、これを実行します。

using System; 
using System.Windows.Forms; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     string foo = "FOO"; 
     switch (foo) 
     { 
      case "FOO": 
       MessageBox.Show("Dog"); 
       MessageBox.Show("Cat"); 
       break; 
     } 
    } 
} 

両方のメッセージボックスが表示されます。私は、あなたが私たちを見せていないということが何か起こっていると思う。あなたの質問を編集してである短くて完全なプログラムを含めることができれば、それは別の問題になります。 「FOO」の後:

+0

FOO後の ":"の削除は違いますか?私はテストするために便利な環境を持っていないが、何とか最初のメッセージボックスをケースの一部として解釈し、それが正しいケースではないと判断したら、それをスキップするのだろうかと思っている。 – Chris

+1

@Chris:Itそれがなければコンパイルされないという点で違いがあります... –

+0

これは重要な違いですが、おそらくここでは役に立たないでしょう。 ;-) – Chris

2

あなたはコロンがありません。それは読む必要があります:

switch(foo) 
{ 
    case "FOO": 
     MessageBox.Show("Dog"); 
     MessageBox.Show("Cat"); 
     break; 
    case ... 
    case ... 
} 

私はまた、問題を再現できません。もっとコードを表示してください - エラーの本当の原因を私たちに示していないと確信しています。

0

あなたが"FOO".

switch(foo) 
{ 
    case "FOO": 
     MessageBox.Show("Dog"); 
     MessageBox.Show("Cat"); 
     break; 
    case ... 
    case ... 
} 
関連する問題