可能重复:
Advantage of switch over if-else statement
Why the switch statement and not if-else?
switch语句似乎完全没用。它能做的任何事情都可以通过if和else来完成。
他们甚至可能编译成相同的代码。
为什么还要费心呢?
交换机中的break
语句让我发疯,label:
格式让我想起了goto。
这是针对objective-c,c,C ++的。我不确定vb.net是否有switch语句,但即使它确实如此,我必须忘记因为我从来没有使用它。
答案 0 :(得分:10)
他们很可能编译成相同的代码。但意图不一定是提供更好的编译代码,而是提供更好的源代码。
您可以while
和for
循环播放if
和goto
,但这不会使while
和for
无效。你愿意拥有:
for (i = 0; i < 10; i++)
doSomethingWith (i);
或:
i = 0;
loop12:
if (! (i < 10))
goto skip12
doSomethingWith (i);
i++;
goto loop12
skip12:
答案 1 :(得分:3)
if (color == WHITE)
{
}
else if (color == BLACK)
{
}
else if (color == GREY)
{
}
else if ((color == ORANGE) || (color == GREEN) || (color == BLUE))
{
}
else
{
}
VS
switch(color)
{
case WHITE:
break;
case BLACK:
break;
case GREY:
break;
case ORANGE:
case GREEN:
case BLUE:
break;
default:
break;
}
后者是否更具可读性并且需要更少的击键?
答案 2 :(得分:1)
开关的性能与if相同,否则在最坏的情况下是块。它可能会更好。之前已经讨论过这个问题:Advantage of switch over if-else statement
答案 3 :(得分:0)
优点:
Switch
提供了一种比if
Switch
的工作速度比if
快,因为执行期间编译生成跳转表决定满足哪种情况而不是检查哪种情况满足!
缺点:
case
只能有int
或char
个常量或一个表达式,可以评估其中一个!