2012-03-16 85 views
0

我有下面的switch語句,當字符串foo = "FOO"那麼case會觸發兩個MessageBoxes。但我只得到「」彈出,而不是「」。出於某種原因,案件只運行第一條陳述,然後自行解散。這是爲什麼?爲什麼C#開關只運行第一條語句?

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

我不知道,如果它的解決辦法,但你忘了加上後添加":":「富」了! – 2012-03-16 10:06:42

+0

你想在MessageBox中顯示什麼信息? – Coder 2012-03-16 10:07:31

+0

我測試了你的代碼,我看到了* Dog *和* Cat *。 – Jason 2012-03-16 10:07:47

回答

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

兩個消息框都顯示出來。我懷疑別的事情正在發生,你沒有向我們展示。如果你可以編輯你的問題,包括一個簡短但完整的程序確實證明了這個問題,那將是一個不同的問題。

+0

FOO後刪除「:」是否有所作爲?我還沒有一個有用的環境來測試,但我想知道它是否以某種方式將該第一個消息框解釋爲該情況的一部分,然後決定它不是正確的情況下跳過它... – Chris 2012-03-16 10:09:33

+1

@Chris:It在它沒有它的情況下它不會被編譯...... – 2012-03-16 10:10:33

+0

這是一個重大的區別,雖然這裏可能沒有用處。 ;-) – Chris 2012-03-16 10:10:54

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