Estamos acostumbrados a usar la estructura swich evaluando valores exactos, switch toma la variable y ejecuta el bloque con las instrucciones del caso con el cual coincida, ejemplo:
int variable = 2;
switch(variable) {
case 1:
// Se ejecuta si la variable es 1
break; case 2:
// Se ejecuta si la variable es 2
break; case n:
// Se ejecuta si la variable es n
break;
}
Aunque dependiendo de la problemática resulta ser muy útil, pero a veces sería más conveniente poder evaluar una expresión boleana en cada caso, por ejemplo:
int n;
switch(n) {
En caso de que n < 0:
break;
En caso de que n == 0:
break;
En caso de que n > 0:
break;
}
En C# hay una forma de hacer lo anterior, bastan unos pequeños ajustes al switch para poder evaluar expresiones boleanas en cada uno de sus casos, la estructura es la siguiente:
switch (variable) {
case <variable_caso> when (<expresión_boleana>):
break;
}
Donde:
variable es el valor que recibe y evaluará el switch.
variable_caso toma el valor de la variable recibida por el switch.
when indica que el caso se ejecutará solo si se cumple la siguiente condición.
expresión_boleana es la condición que debe cumplirse para cada caso.
■ Ejemplo
Un switch que reciba números enteros y cuente cuántos son negativos, cuántos positivos y cuántos son 0.
switch (num) {
case int n when (n < 0):
negativos++;
break;
case int n when (n == 0):
ceros++;
break;
case int n when (n > 0):
positivos++;
break;
}
Parece algo que podríamos manejar mejor con un if, pero este es solo un ejemplo muy básico para mostrar esta característica del switch ya que tiene otras ventajas por ejemplo con objetos.
No hay comentarios:
Publicar un comentario