可能重复:
“else if”比“switch() case”快吗?
在Java中,if/else与switch相对性能如何?
我又开始边写代码边调试了...当调试器通过case语句时,它会立即跳转到与条件匹配的项,然而当相同的逻辑使用if/else指定时,它会遍历每个if语句,直到找到胜者。case语句更有效率,还是我的调试器只是优化了步骤?(不用担心语法/错误,我把它打在SO上,不知道它是否能编译,我只是想说明一个原则,我不想将它们作为整数处理,因为我模糊地记得case使用偏移量与整数)我使用C#,但我对所有编程语言都感兴趣。
switch(myObject.GetType()){
case typeof(Car):
//do something
break;
case typeof(Bike):
//do something
break;
case typeof(Unicycle):
//do something
break;
case default:
break;
}
VS
Type myType = myObject.GetType();
if (myType == typeof(Car)){
//do something
}
else if (myType == typeof(Bike)){
//do something
}
else if (myType == typeof(Unicycle)){
//do something
}
else{
}
Vehicle#doSomething()
,并且在具体实现中自身定义每个方法,这样你只需要使用myObject.doSomething()
即可。 - BalusCswitch
。对于其他情况,请使用if else
。这样,如果你看到一块switch
语句,你就立刻知道代码的目的是什么。 - BigName