C# 开关:一种情况下有多个值?
我有下面的代码,但当我输入“12”时,我仍然得到“你是一个老人”。9-15不是数字9到15吗?除此之外,我如何在一个案例中处理多个值C# 开关:一种情况下有多个值?,c#,switch-statement,case,C#,Switch Statement,Case,我有下面的代码,但当我输入“12”时,我仍然得到“你是一个老人”。9-15不是数字9到15吗?除此之外,我如何在一个案例中处理多个值 int age = Convert.ToInt32(txtBoxAge.Text); switch (age) { case 1 - 8: MessageBox.Show("You are only " + age + " years old\n You must be kidding right.\nPlease fill in y
int age = Convert.ToInt32(txtBoxAge.Text);
switch (age)
{
case 1 - 8:
MessageBox.Show("You are only " + age + " years old\n You must be kidding right.\nPlease fill in your *real* age.");
break;
case 9 - 15:
MessageBox.Show("You are only " + age + " years old\n That's too young!");
break;
case 16-100:
MessageBox.Show("You are " + age + " years old\n Perfect.");
break;
default:
MessageBox.Show("You an old person.");
break;
}
您必须执行以下操作:
case 1:
case 2:
case 3:
//do stuff
break;
1-8=-7
9-15=-6
16-100=-84
你有:
case -7:
...
break;
case -6:
...
break;
case -84:
...
break;
或使用:
等等,或者(可能更可读)使用:
如果(age>=1&&age=9&&age=16&&age您不能在case语句中指定范围,可以执行以下操作
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
MessageBox.Show("You are only " + age + " years old\n You must be kidding right.\nPlease fill in your *real* age.");
break;
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
MessageBox.Show("You are only " + age + " years old\n That's too young!");
break;
……等等。您可以使用ifelse来代替。但如果您想知道在这种情况下如何使用switch,请看一个示例
int age = Convert.ToInt32(txtBoxAge.Text);`
int flag;
if(age >= 1 && age <= 8) {
flag = 1;
} else if (age >= 9 && age <= 15) {
flag = 2;
} else if (age >= 16 && age <= 100) {
flag = 3;
} else {
flag = 4;
}
switch (flag)
{
case 1:
MessageBox.Show("You are only " + age + " years old\n You must be kidding right.\nPlease fill in your *real* age.");
break;
case 2:
MessageBox.Show("You are only " + age + " years old\n That's too young!");
break;
case 3:
MessageBox.Show("You are " + age + " years old\n Perfect.");
break;
default:
MessageBox.Show("You an old person.");
break;
}
int-age=Convert.ToInt32(txtBoxAge.Text)`
int标志;
如果(年龄>=1&&age=9&&age=16&&age,您可以尝试此方法
switch (Valor)
{
case (Valor1 & Valor2):
break;
}
开关(Valor)
{
案例(Valor1和Valor2):
打破
}
无法在一个“case”中计算多个值。您可以使用if语句(如其他人所建议的)或调用一个方法来计算整数所属的范围,并返回表示该范围的值(如“minor”、“成人”等),然后在switch语句中计算该返回值。当然,您可能仍然在自定义方法中使用if语句。在C#7中,可以使用if语句
int-age=12;
开关(年龄)
{
case int i当i>=1&&i=9&&i=16&&i时,将年龄的业务规则与操作分开,例如(注意:仅键入,未选中)
enum ange{eChild,eYouth,eAdult,eAncient};
热切的渴望;
如果(年龄这个怎么办
switch (true)
{
case (age >= 1 && age <= 8):
MessageBox.Show("You are only " + age + " years old\n You must be kidding right.\nPlease fill in your *real* age.");
break;
case (age >= 9 && age <= 15):
MessageBox.Show("You are only " + age + " years old\n That's too young!");
break;
case (age >= 16 && age <= 100):
MessageBox.Show("You are " + age + " years old\n Perfect.");
break;
default:
MessageBox.Show("You an old person.");
break;
}
开关(真)
{
case(age>=1&&age=9&&age=16&&age这对于开关语句来说似乎不是一个很好的例子。如果语句是一系列的话,它会更有意义。开关不接受case的范围值:“case 1-8:”被解释为“case-7:”但在您的情况下,我认为If构造会更好。谢谢,我现在这样做了,但我得到一个FormatException在年龄声明中未处理:/更可读的将是计算每个年龄段的方法:)这是多年来我在这个网站上看到的最糟糕的代码部分。如果解决方案是糟糕的代码,你甚至不会给作者他们真正想要的东西,因为它是糟糕的。至少可以展示如何在一个结果中将命名的案例
与默认案例
结合起来,而不是定义了单独的默认值或仅定义了默认值。如case“case_default”:默认值:return x;break;
自从C#7发布以来,这已成为正确答案。
switch (Valor)
{
case (Valor1 & Valor2):
break;
}
int age = 12;
switch (age)
{
case int i when i >=1 && i <= 8:
System.Console.WriteLine("You are only " + age + " years old. You must be kidding right. Please fill in your *real* age.");
break;
case int i when i >=9 && i <= 15:
System.Console.WriteLine("You are only " + age + " years old. That's too young!");
break;
case int i when i >=16 && i <= 100:
System.Console.WriteLine("You are " + age + " years old. Perfect.");
break;
default:
System.Console.WriteLine("You an old person.");
break;
}
enum eAgerange { eChild, eYouth, eAdult, eAncient};
eAgeRange ar;
if(age <= 8) ar = eChild;
else if(age <= 15) ar = eYouth;
else if(age <= 100) ar = eAdult;
else ar = eAncient;
switch(ar)
{
case eChild:
// action
case eYouth:
// action
case eAdult:
// action
case eAncient:
// action
default: throw new NotImplementedException($"Oops {ar.ToString()} not handled");
}
switch (true)
{
case (age >= 1 && age <= 8):
MessageBox.Show("You are only " + age + " years old\n You must be kidding right.\nPlease fill in your *real* age.");
break;
case (age >= 9 && age <= 15):
MessageBox.Show("You are only " + age + " years old\n That's too young!");
break;
case (age >= 16 && age <= 100):
MessageBox.Show("You are " + age + " years old\n Perfect.");
break;
default:
MessageBox.Show("You an old person.");
break;
}