Can someone please explain this to me?
They are pretty similar but each has a few special features.
switch
switchis usually more compact than lots of nestedif elseand therefore, more readable- If you omit the
breakbetween two switch cases, you can fall through to the next case in many C-like languages. Withif elseyou'd need agoto(which is not very nice to your readers ... if the language supportsgotoat all). - In most languages,
switchonly accepts primitive types as key and constants as cases. This means it can be optimized by the compiler using a jump table which is very fast. It is not really clear how to format
switchcorrectly. Semantically, the cases are jump targets (like labels forgoto) which should be flush left. Things get worse when you have curly braces:case XXX: { } break;Or should the braces go into lines of their own? Should the closing brace go behind the
break? How unreadable would that be? etc.
if-else
ifallows complex expressions in the condition while switch wants a constant- You can't accidentally forget the
breakbetweenifs but you can forget theelse(especially during cut'n'paste)
We really need to know what language you're talking about to be accurate in our responses. In general they do the same thing, and most of the time you pick the one that is most readable for your context. But that may not hold true across different languages and different situations, so we need more info.
in C#, Switch expects a constant value
if you need to compare with the value of a variable, you will have to use if-else
i think that main difference is that in if-else blocks we can test conditions.but does not go exactly in same way in switch