If vs. Switch Comparison
Parte da seção Lógica & Fluxo do Journey de C# da Coddy — lição 10 de 66.
O C# oferece duas maneiras principais para lidar com múltiplas condições: instruções if-else e instruções switch. Cada uma tem seus pontos fortes em diferentes cenários.
As instruções if-else são flexíveis e podem lidar com qualquer tipo de condição:
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");
}As instruções switch são mais limpas ao comparar uma única variável com vários 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;
}O switch pode agrupar múltiplos casos que compartilham o mesmo resultado ao empilhar rótulos case juntos — isso é chamado de fall-through. Quando vários casos não têm código entre eles, eles todos executam o mesmo bloco:
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;
}Aqui, 'S' e 'U' ambos fazem fall-through para a mesma chamada Console.WriteLine("Weekend"). Empilhar rótulos case vazios assim é a forma padrão de agrupar casos no C#.
Desafio
MédioCrie um método chamado convertGradeToPoints que:
- Recebe uma nota de letra como um parâmetro string
- Converte para um ponto de nota numérico usando tanto as abordagens switch quanto if-else
- O método deve implementar ambas as abordagens e retornar o resultado da implementação switch
- Use estas conversões de notas:
- "A" ou "a" = 4
- "B" ou "b" = 3
- "C" ou "c" = 2
- "D" ou "d" = 1
- "F" ou "f" = 0
- Qualquer outra entrada = -1
Folha de consulta
O C# fornece duas maneiras principais de lidar com múltiplas condições: instruções if-else e instruções switch.
As instruções if-else são flexíveis e podem lidar com qualquer tipo de condição:
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");
}As instruções switch são mais limpas ao comparar uma única variável contra múltiplos 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;
}As instruções switch podem agrupar múltiplos cases (fall-through) para compartilhar o mesmo resultado empilhando rótulos 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;
}Experimente você mesmo
public class ConvertGradeToPoints
{
// Implemente o método convertGradeToPoints
public static int convertGradeToPoints(string letterGrade)
{
// Escreva seu código aqui
}
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
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