¿Alguien puede explicarme esto?¿Cuál es la diferencia entre IF-ELSE y SWITCH?
Respuesta
Son bastante similares, pero cada uno tiene algunas características especiales.
interruptor
switch
es por lo general más compacto que un montón de anidadoif else
y por lo tanto, más fácil de leer- Si omite los
break
entre dos carcasas de interruptor, puede caer a través de la siguiente caso en el muchos lenguajes tipo C Conif else
necesitaría ungoto
(que no es muy agradable para sus lectores ... si el lenguaje es compatible congoto
). - En la mayoría de los idiomas,
switch
solo acepta tipos primitivos como clave y constantes como casos. Esto significa que puede ser optimizado por el compilador usando una tabla de salto que es muy rápida. No está claro cómo formatear correctamente
switch
. Semánticamente, los casos son objetivos de salto (como las etiquetas paragoto
) que deben alinearse a la izquierda. Las cosas empeoran cuando tienes llaves:case XXX: { } break;
¿O deberían las llaves entrar en líneas propias? ¿Debería el corchete de cierre ir detrás del
break
? ¿Qué tan ilegible sería eso? etc.- En muchos idiomas,
switch
solo acepta solo algunos tipos de datos.
if-else
if
permite expresiones complejas en la condición mientras el interruptor quiere una constante- No se puede olvidar accidentalmente los
break
entreif
s pero se puede olvidar elelse
(especialmente durante el corte de pasta) - acepta todos los tipos de datos.
Una nota para mencionar que el comportamiento de caída del caso es específico del lenguaje, c lo permitirá felizmente hacerlo, pero C# impone algunas restricciones al pasar de una declaración de caso a otra. –
una de las principales diferencias es la forma en que comprueban la condición: con 'if-else' solo se puede verificar la igualdad, mientras que con' switch' se puede hacer un poco más ... –
Creo que la diferencia principal es que en los bloques si-si no podemos probar conditions.but no va exactamente en la misma forma que en el interruptor
SI persona - Se utiliza para tomar unas decisiones
Instrucción de cambio: se usa para probar el valor de la variable dada con una lista de valor de caso.
La diferencia principal es que switch
despachos inmediatamente a la case
en cuestión, normalmente a través de un salto de indexado, en lugar de tener que evaluar todas las condiciones que serían necesarios en una cadena if-else
, lo que significa que el código en el final de la cadena se alcanza más lentamente que el código al principio.
A su vez, impone algunas restricciones en la declaración switch
que la cadena no tiene if-else
: no puede manejar todos los tipos de datos, y todos los valores case
tiene que ser constante.
The difference between Switch and if-else statement is below:
This is the general syntax of if-else ladder:
if (condition1) { //Body of if }
else if (condition2) { //Body of if }
else if (condition3) { //Body of if }
And this is the general syntax for switch:
switch (variable)
{
case <variable value1>: //Do Something
break;
case <variable value2>://Do Something
break;
default: //Do Something
break;
}
# The if-else ladder is of type strict condition check,
# while switch is of type jump value catching.
Ventajas del interruptor de más de if-else escalera:
- Una sentencia switch funciona mucho más rápido que equivale escalera si-else. Es porque el compilador genera una tabla de salto para un cambio durante la compilación. En consecuencia, durante la ejecución, en lugar de verificar qué caso se satisface, solo decide qué caso se debe ejecutar.
- Es más legible y en comparación con las sentencias if-else.
Diferencias entre if-else y cambiar
expresión dentro if decidir si ejecutar las sentencias en el interior si el bloque o en bloques más. Por otro lado, la expresión dentro de la sentencia switch decide qué caso ejecutar.
La instrucción If-esle comprueba la igualdad así como la expresión lógica. Por otro lado, cambie las verificaciones solo por igualdad.
La instrucción if evalúa entero, carácter, puntero o tipo de punto flotante o tipo booleano. Por otro lado, la declaración de cambio evalúa solo el carácter o un tipo de datos entero.
La secuencia de ejecución es como cualquiera de las instrucciones en if block se ejecutará o se ejecutarán las sentencias en else block statement. Por otro lado, la expresión en la sentencia switch decide qué caso ejecutar y, si no aplica una instrucción break después de cada caso, se ejecutará hasta el final de la instrucción switch.
Si la expresión adentro si las salidas son falsas, se ejecutará la instrucción dentro del bloque else. Si la expresión dentro de la instrucción switch resulta ser falsa, se ejecutan las declaraciones predeterminadas.
Es difícil editar sentencias if-else, ya que es tedioso rastrear dónde se requiere la corrección. Por otro lado, es fácil editar instrucciones de cambio ya que son fáciles de rastrear.
- 1. ¿Cuál es la diferencia entre {0} y ""?
- 2. Cuál es la diferencia entre = y: =
- 3. ¿Cuál es la diferencia entre .ToString (+) y ""
- 4. Cuál es la diferencia entre $ (...) y `...`
- 5. ¿cuál es la diferencia entre:.! y: r !?
- 6. ¿Cuál es la diferencia entre ".equals" y "=="?
- 7. ¿Cuál es la diferencia entre dict() y {}?
- 8. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 9. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 10. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 11. ¿Cuál es la diferencia entre + = y = +?
- 12. ¿Cuál es la diferencia entre " " y ""?
- 13. Cuál es la diferencia entre $ y jQuery
- 14. Cuál es la diferencia entre BindProperty y SetProperty en IModelBinder
- 15. OpenGL (ES) - ¿Cuál es la diferencia entre frustum y orto?
- 16. Cuál es la diferencia entre la función() {}() y la función() {}()
- 17. ¿Cuál es la diferencia entre la abstracción y la encapsulación?
- 18. ¿Cuál es la diferencia entre @ y $ y% en MSBuild?
- 19. ¿Cuál es la diferencia entre la vinculación estática y dinámica?
- 20. ¿Cuál es la diferencia entre la sección .got y .got.plt?
- 21. ¿Cuál es la diferencia entre el colado y la coerción?
- 22. ¿cuál es la diferencia entre el complemento y la biblioteca?
- 23. ¿Cuál es la diferencia entre el casting y la conversión?
- 24. ¿Cuál es la diferencia entre WPF y la aplicación Silverlight?
- 25. ¿Cuál es la diferencia entre uno mismo y la ventana?
- 26. ¿Cuál es la diferencia entre CookieContainer y la colección Response.Cookies?
- 27. ¿Cuál es la diferencia entre la relación Composición y Asociación?
- 28. ¿cuál es la diferencia entre el material y la textura?
- 29. ¿Cuál es la diferencia entre el marco y la arquitectura?
- 30. ¿Cuál es la diferencia entre la carpeta vim72 y vimfiles?
Solo un puntero: no obtendrá muchas respuestas útiles si no se toma el tiempo para formular correctamente la pregunta. –
No importa :) ya está hecho. –
Ya hay una pregunta sobre esto en SO: [Switch vs if-else] (http://stackoverflow.com/questions/97987/switch-vs-if-else) ** [EDIT] **
Como "lc "declaró en un comentario a esta respuesta, la pregunta anterior no es un duplicado, pero aún podría darle una buena idea del funcionamiento y qué usar si ocurre esa situación específica. – RuudKok