Comparación entre If y Switch
Parte de la sección Lógica y Flujo del Journey de C# de Coddy. Lección 10 de 66.
C# proporciona dos formas principales de manejar múltiples condiciones: las sentencias if-else y las sentencias switch. Cada una tiene sus ventajas en diferentes situaciones.
Las instrucciones if-else son flexibles y pueden manejar cualquier tipo de condición:
string grade = "B";
if (grade == "A")
{
Console.WriteLine("Excellent");
}
else if (grade == "B")
{
Console.WriteLine("Good");
}
else if (grade == "C")
{
Console.WriteLine("Satisfactory");
}
else
{
Console.WriteLine("Needs improvement");
}Las instrucciones switch son más claras al comparar una sola variable con varios valores constantes:
string grade = "B";
switch (grade)
{
case "A":
Console.WriteLine("Excellent");
break;
case "B":
Console.WriteLine("Good");
break;
case "C":
Console.WriteLine("Satisfactory");
break;
default:
Console.WriteLine("Needs improvement");
break;
}switch puede agrupar varios casos (fall-through) para que compartan el mismo resultado. Coloca las etiquetas de caso una después de otra sin código entre ellas, y solo un break al final:
string grade = "B";
switch (grade)
{
case "A":
case "a":
Console.WriteLine("Excellent - 4 points");
break;
case "B":
case "b":
Console.WriteLine("Good - 3 points");
break;
case "C":
case "c":
Console.WriteLine("Satisfactory - 2 points");
break;
default:
Console.WriteLine("Needs improvement");
break;
}Aquí, tanto "B" como "b" pasan al mismo bloque e imprimen "Good - 3 points". Este patrón resulta útil siempre que quieras que las entradas en mayúsculas y minúsculas, o cualquier conjunto de valores, produzcan el mismo resultado.
Switch también puede agrupar casos con diferentes etiquetas que comparten un resultado:
char dayCode = 'M';
switch (dayCode)
{
case 'M':
Console.WriteLine("Monday");
break;
case 'T':
Console.WriteLine("Tuesday or Thursday");
break;
case 'W':
Console.WriteLine("Wednesday");
break;
case 'F':
Console.WriteLine("Friday");
break;
default:
Console.WriteLine("Unknown day");
break;
}Desafío
IntermedioCrea un método llamado convertGradeToPoints que:
- Acepte una calificación con letra como parámetro de tipo cadena
- La convierta en un valor numérico de calificación utilizando enfoques tanto con switch como con if-else
- El método debe implementar ambos enfoques y devolver el resultado de la implementación con switch
- Utiliza estas conversiones de calificaciones:
- "A" o "a" = 4
- "B" o "b" = 3
- "C" o "c" = 2
- "D" o "d" = 1
- "F" o "f" = 0
- Cualquier otra entrada = -1
Pruébalo tú mismo
public class ConvertGradeToPoints
{
// Implementa el método convertGradeToPoints
public static int convertGradeToPoints(string letterGrade)
{
// Escribe tu código aquí
}
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Arrays multidimensionales
Conceptos básicos de arrays 2DDeclaración e inicialización de arrays 2DAcceso a elementos de arrays 2DBucles anidados con arrays 2DArrays irregularesOperaciones comunes con matricesRepaso: arrays multidimensionales4Técnicas de control de flujo
Retornos anticipadosCláusulas de guardaSentencias de salto (goto)Break y ContinueAplanar condicionales anidados7Operadores lógicos avanzados
Evaluación de cortocircuitoOperadores lógicos condicionalesPrecedencia de operadoresRepaso: operadores avanzados2Toma de decisiones avanzada
Múltiples condicionesLógica booleana complejaComparación entre If y SwitchSentencias Switch anidadasRepaso: decisiones avanzadas5Manejo de excepciones
Fundamentos de Try-CatchTipos de excepcionesMúltiples bloques CatchTrabajo con archivosBloque FinallyUso de Using frente a Try-FinallyExcepciones personalizadasRepaso: manejo de errores3Mejoras de bucles
Rendimiento de buclesIteración de estructuras complejasCada tipo de bucleRefactorización de buclesRepaso: bucles optimizados6Manejo de valores nulos
Conceptos básicos de referencias nulasTipos de valor anulablesPatrones de comprobación de valores nulosProgramación defensivaRepaso: seguridad frente a valores nulosPractica por tu cuenta: Compilador de C# online