控件不能从一个案例标签(案例 "Juventus" :')落到另一个案例标签。知道为什么吗?



我正在检索控制权无法从一个案例标签(案例"尤文图斯":')转移到另一个案例。知道为什么吗?我正试图根据查询结果打开另一个表单进行打印。感谢

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

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

在c中,这将工作

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

如果i为1,它将打印11 or 2,但如果i为2,它只打印1 or 2

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

  • break
  • return
  • throw甚至
  • goto

所以您在case "Juventus":中缺少break语句

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

编辑:正如其他人所提到的,用例语句可以通过:

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

添加break;报表前

case "porto":

相关内容

最新更新