[英]c# switch statement question
我会追逐。 关于开关,我有两个简单的问题,但我无法弄清楚。
第一:
在c#switch语句中,case语句是否必须是连续的(带有int)?
例如:
switch(someInt)
{
case 1
// some code
case 2
// some code
case 3
// some code
}
或者可以执行以下操作:
switch(someInt)
{
case 1
case 3
case 5
}
我知道通常将if-else语句用于诸如此类的事情,但我只是想知道它是否可行。
另外,在案例陈述中使用实际数字是否被视为魔术数字? 还是更好的做法是声明要在case语句中使用的常量?
谢谢!
编辑:
感谢大家的回应! 我很感激。
它们可以按照您想要的任何顺序排列。 不,使用实际数字并不总是不好。 但不是魔术数字。 如果要比较int
,请使用数字,例如
switch (numberOfItems)
{
case 0:
break;
case 1:
break;
default:
break;
}
(当然,这只是一个例子,我无法想象在现实世界中看到此代码)
他们不必是连续的。 尽管我这样做只是为了清楚起见。
顺序无关紧要,编译器将为您完成该工作。
我更喜欢使用枚举或const int来提供数字的含义,尤其是当其他人正在维护它时。
case语句的值绝对不需要连续。
您也不必仅使用整数值。 字符串也一样。
如果您担心魔术数字,最好的选择是创建一个枚举。 它将传达那些魔术数字的含义。 否则,享受它并享受。
两者都有可能。 语法是这样的:(您很接近)
switch(someInt)
{
case 1:
// some code
break;
case 2:
// some code
break;
case 3:
// some code
break;
default:
// code for "else" case
break;
}
or is it possible to do something like the following:
switch(someInt)
{
case 1:
case 3:
case 5:
// some code
break;
}
注意冒号和break
秒。
至于魔术数字的使用,通常,我更喜欢将常量放在常量中,但是对于明显的数字(例如检查因子除数的最低数字为2),我例外。
作为一个小的优化,您可以根据实际/期望的频率对案例值进行排序。 我还将添加一个“默认”情况,以便您可以轻松发现使用枚举的位置并忘记了对其进行说明。 这是在常量上使用枚举值的另一个原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.