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