控制不能从一个案例标签(案例"尤文图斯":')转移到另一个案例标签。知道为什么吗?

时间:2017-02-01 10:29:20

标签: c# switch-statement

我正在检索控制不能从一个案件labe(案例"尤文图斯":')到另一个案件。知道为什么吗?我试图打开一个不同的表单来打印基于查询的结果。感谢

using (SqlConnection connection = new SqlConnection("Data Source=xxxx;Initial Catalog=Marketing;Integrated Security=True"))
{
    SqlCommand command = new SqlCommand("select [Team] from baf where id=(select max(id) from baf)", connection);
    connection.Open();
    SqlDataReader read = command.ExecuteReader();
    while (read.Read())
    {
        String AAA = (read["Team"].ToString());
        switch (AAA)
        {
            case "Arsenal":
                Print dd = new Print();
                dd.Show();
                break;
            case "Juventus":
                Print2 dd2 = new Print2();
                dd2.Show();
            case "Porto":
                Print3 dd3 = new Print3();
                dd3.Show();
                break;
            case "Bayern Munich":
                Print4 dd4 = new Print4();
                dd4.Show();
                break;
            }
            this.Close();
        }
    }
}

2 个答案:

答案 0 :(得分:4)

与C或C ++不同,C#不允许switch/case语句,其中控制流可以通过"从一个case进入下一个。

在c中,这将起作用

switch(i)
{
    case 1: printf("1");
    case 2: printf("1 or 2"); break;
}

如果1为1,则会打印1 or 2 i,但如果1 or 2为2则仅打i

在c#中,这是不允许的。每个非空case必须退出整个switch语句。这可以通过

完成
  • break
  • return
  • throw甚至
  • goto

因此,您错过了break上的case "Juventus"声明:

case "Juventus":
    Print2 dd2 = new Print2();
    dd2.Show();
    break; // you forgot that

编辑:正如其他人提到的那样, empty 案例陈述可以通过:

switch(i)
{
    case 1:
    case 2:
        // do something if i is 1 or 2
        break;
}

答案 1 :(得分:0)

添加休息;在陈述之前

case "porto":