If vs. Switch Comparison
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 para manejar múltiples condiciones: sentencias if-else y sentencias switch. Cada una tiene sus fortalezas en diferentes escenarios.
Las sentencias 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 sentencias switch son más limpias cuando se compara una sola variable contra múltiples 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;
}El switch puede agrupar múltiples casos que comparten el mismo resultado apilando etiquetas case juntas — esto se llama fall-through. Cuando varios casos no tienen código entre ellos, todos ejecutan el mismo bloque:
char dayCode = 'S';
switch (dayCode)
{
case 'M':
case 'T':
case 'W':
case 'R':
case 'F':
Console.WriteLine("Weekday");
break;
case 'S':
case 'U':
Console.WriteLine("Weekend");
break;
default:
Console.WriteLine("Unknown day");
break;
}Aquí, 'S' y 'U' ambos caen hasta la misma llamada Console.WriteLine("Weekend"). Apilar etiquetas case vacías como esta es la forma estándar de agrupar casos en C#.
Desafío
IntermedioCrea un método llamado convertGradeToPoints que:
- Toma una calificación de letra como parámetro string
- La convierte a un punto de calificación numérico usando tanto los enfoques switch como if-else
- El método debe implementar ambos enfoques y devolver el resultado de la implementación switch
- Usa 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
Hoja de referencia
C# proporciona dos formas principales para manejar múltiples condiciones: instrucciones if-else y instrucciones switch.
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 limpias al comparar una sola variable contra múltiples 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;
}Las instrucciones switch pueden agrupar múltiples casos (fall-through) para compartir el mismo resultado apilando etiquetas case:
char dayCode = 'S';
switch (dayCode)
{
case 'M':
case 'T':
case 'W':
case 'F':
Console.WriteLine("Weekday");
break;
case 'S':
case 'U':
Console.WriteLine("Weekend");
break;
default:
Console.WriteLine("Unknown day");
break;
}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
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety