为什么C#switch只运行第一个语句?

时间:2012-03-16 10:04:31

标签: c# switch-statement

我有以下switch语句,当字符串foo = "FOO"时,该案例将触发两个MessageBoxes。但我只会弹出“ Dog ”而不是“ Cat ”。出于某种原因,该案例只运行第一个语句然后自行中断。那是为什么?

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

3 个答案:

答案 0 :(得分: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;
        }
    }
}

两个消息框都会显示出来。我怀疑还有其他事情你没有向我们展示。如果您可以编辑您的问题以包含 演示问题的简短但完整的程序,那将是另一回事。

答案 1 :(得分:2)

你错过了冒号。它应该是:

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

除此之外,我也无法重现这个问题。请显示更多代码 - 我很确定您没有向我们展示错误的真正原因。

答案 2 :(得分:0)

您忘了在":"

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