C#中switch的case值只能是单个值,不允许范围...你是VB转过来的吧...case 0-20: => case -20: case 21-50: => case -29:以上都被视为减法...
case里面只能是一个常量,不是能一个范围; 要范围的话使用if更适合
case的值必须是常量表达式,不允许使用变量如果你非得这么写的话你就全部列出来喽,switch(i) { case "0": "a" break; case "1": "a" break; ..... case "50": "b" break; default: "c" break; } 这样累不累啊
这没什么好办法 或许可以使用if...else if ... else这样的结构,起码可以表达范围,switch不可以case范围
你先这样写 0-20的数全定义为一个特定的字符如(a,b,c...) 同理(20-50)也一样 然后就是 switch(i) { case "a": case "b": .............. }
有case要这样写才行,否则就用if...else...试试,应该没那么麻烦. switch(i) { case 0: case 1: ... case 20: "a" break; case 21-50: case 22: ... case 50: "b" break; default: "c" break; }
case 21-50: => case -29:以上都被视为减法...
要范围的话使用if更适合
{
case "0":
"a"
break;
case "1":
"a"
break; ..... case "50":
"b"
break;
default:
"c"
break;
}
这样累不累啊
我记得不清楚啦
影像中是 case后面跟着的是 (数字或者字母)--------------
我给你找原因啦
switch(i)
你输入的就等于 i=1,i=2, i=3
你这里做判断 case 0-20:
就相当于
1 = 0-20
着肯定不成立的啦
default: C啦
或许可以使用if...else if ... else这样的结构,起码可以表达范围,switch不可以case范围
同理(20-50)也一样
然后就是
switch(i)
{
case "a":
case "b":
..............
}
switch(i)
{
case 0:
case 1:
...
case 20:
"a"
break;
case 21-50:
case 22:
...
case 50:
"b"
break;
default:
"c"
break;
}