mit*_*221 -2 c# compiler-errors
我正在尝试将JavaScript开关转换为C#.
我收到了错误 Error 3 Cannot implicitly convert type 'bool' to 'int'
switch (numero)
{
case (numero > -1 && numero < 16):
rtn = list1[numero] + " " + str2;
if (primerDigito != 1)
{
rtn += "s";
}
break;
case (numero > 15 && numero < 30):
if (numero != 20)
{
rtn = list2[primerDigito] + list1[segundoDigito];
}
else
{
rtn = "veinte";
}
rtn += " " + str2 + "s";
break;
case (numero > 29 && numero < 100):
rtn = list2[primerDigito] + "nta";
if (segundoDigito != 0)
{
rtn += " y " + list1[segundoDigito];
}
rtn += " " + str2 + "s";
break;
case 100:
rtn = "cien " + str2 + "s";
break;
default:
rtn = "número invalido";
}
Run Code Online (Sandbox Code Playgroud)
有没有解决这个问题?
注意:我真的必须使用switch-case(而不是if-elses)
eou*_*3hf 13
你不能这样做:一个switch
语句只能使用单个值,而不能使用case
s的范围.
你需要一个if
/ else
树.形式的东西:
if(numero > -1 && numero < 16) {
rtn = list1[numero] + " " + str2;
if (primerDigito != 1)
{
rtn += "s";
}
} else if(numero > 15 && numero < 30) {
// logic in second block
} else if...
Run Code Online (Sandbox Code Playgroud)
请注意,如果你绝对,完全致力于使用a switch
,你将不得不列举所有的情况(但这是一个如此严重的软件工程罪,我甚至不相信我写出来 - 不要这样做,它只是一个关于switch语句如何工作的例子):
switch(numero)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
rtn = list1[numero] + " " + str2;
if (primerDigito != 1)
{
rtn += "s";
}
break;
case 16:
...
case 28:
case 29:
// second logic block
break;
...
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我在代码库中看到这一点,我会感到困惑和愤怒.
归档时间: |
|
查看次数: |
1013 次 |
最近记录: |