Der Unterschied zwischen der Switch- und der if-else-Anweisung ist der folgende:
Dies ist die allgemeine Syntax der if-else-Leiter:
if (condition1) { //Body of if }
else if (condition2) { //Body of if }
else if (condition3) { //Body of if }
else { //default if all conditions return false }
Und dies ist die allgemeine Syntax für switch:
switch ( variable )
{
case <variable value1>: //Do Something
break;
case <variable value2>://Do Something
break;
default: //Do Something
break;
}
Der if-else-Leiter ist vom Typ strenge Bedingungsprüfung, während switch vom Typ jump value catching ist.
Vorteile von switch gegenüber if-else ladder:
- Eine switch-Anweisung arbeitet viel schneller als eine entsprechende if-else-Leiter. Das liegt daran, dass der Compiler während der Kompilierung eine Sprungtabelle für eine switch-Anweisung erzeugt. Folglich wird während der Ausführung nicht mehr geprüft, welcher Fall erfüllt ist, sondern nur noch entschieden, welcher Fall ausgeführt werden muss.
- Sie ist besser lesbar und mit if-else-Anweisungen vergleichbar.
0 Stimmen
Nur ein Hinweis: Sie werden nicht viele hilfreiche Antworten erhalten, wenn Sie sich nicht die Zeit nehmen, die Frage richtig zu formulieren.
0 Stimmen
Macht nichts :) es ist schon geschehen.
0 Stimmen
Es gibt bereits eine Frage zu diesem Thema auf SO: Schalter vs. if-else ** Editar **<BR> Wie "lc" in einem Kommentar zu dieser Antwort feststellte, ist die obige Frage kein Duplikat, aber sie könnte Ihnen dennoch eine gute Vorstellung von der Funktionsweise geben und was zu verwenden ist, wenn diese spezielle Situation auftritt.
0 Stimmen
Allerdings ist es kein exaktes Duplikat. Die eine, die Sie verlinken, ist speziell über Fall-through und mit OR in der if-else-Anweisung zu fragen.