今天有人问我如何将以下if语句转换为切换:
int i=5;
if(i>10)
{
Do Something;
}
else
{
Do Something else;
}
我建议假设i是一个只有正值的整数:
int i=5;
switch(i)
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10: Do Something else;
break;
case default: Do Something;
break;
}
还有其他更优雅的方式吗?
答案 0 :(得分:1)
首先,请注意您的两个代码示例(最初编写的)不等效:
Do[ing] Something Else
示例中的i==10
时,您不是switch
。if
代码正在检查i>10
(而不是i>=10
)。case 10:
应明确包含在case
的{{1}}列表中。为了回答你的问题,我相信某些语言(例如pascal,Objective C,我认为?)允许使用与此类似的范围:
Do Something Else
但是C#支持 。请参阅代码讨论中关于案例标签“堆叠”的最后一点MSDN switch(C#)
答案 1 :(得分:1)
在C#中没有直接的方法,您可以尝试以下方法。
int range = (number - 1) / 10;
switch(range)
{
case 0:
Console.WriteLine("1 to 10");
break;
case 1:
Console.WriteLine("11 to 20");
break;
//.,......
default:
break;
}
不确定它有多清楚,IMO,上述方法会降低代码可读性,如果使用if-else
进行范围检查则会更好。此外,只有在范围不变的情况下,上述方法才有效。