If vs. Switch Comparison
Coddy C# 여정의 논리 및 흐름 섹션에 포함된 레슨 — 66개 중 10번째.
C#는 여러 조건을 처리하는 두 가지 주요 방법을 제공합니다: if-else 문과 switch 문. 각각 다른 시나리오에서 강점이 있습니다.
If-else 문은 유연하며 모든 유형의 조건을 처리할 수 있습니다:
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");
}Switch 문은 단일 변수를 여러 상수 값과 비교할 때 더 깔끔합니다:
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는 case 레이블을 연속으로 쌓아서 동일한 결과를 공유하는 여러 case를 그룹화할 수 있습니다 — 이를 fall-through라고 합니다. 여러 case 사이에 코드가 없으면 모두 동일한 블록을 실행합니다:
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;
}여기서 'S'와 'U'는 둘 다 동일한 Console.WriteLine("Weekend") 호출로 fall-through 합니다. 이렇게 빈 case 레이블을 쌓는 것은 C#에서 case를 그룹화하는 표준 방법입니다.
챌린지
중급convertGradeToPoints라는 메서드를 생성하세요. 이 메서드는:
- 문자열 매개변수로 문자 등급을 받습니다
- switch와 if-else 접근 방식을 모두 사용하여 이를 숫자 등급 점수로 변환합니다
- 메서드는 두 접근 방식을 모두 구현하고 switch 구현의 결과를 반환해야 합니다
- 다음 등급 변환을 사용하세요:
- "A" 또는 "a" = 4
- "B" 또는 "b" = 3
- "C" 또는 "c" = 2
- "D" 또는 "d" = 1
- "F" 또는 "f" = 0
- 그 외 모든 입력 = -1
치트 시트
C#은 여러 조건을 처리하는 두 가지 주요 방법을 제공합니다: if-else 문과 switch 문.
if-else 문은 유연하며 모든 유형의 조건을 처리할 수 있습니다:
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");
}switch 문은 단일 변수를 여러 상수 값과 비교할 때 더 깔끔합니다:
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 문은 case 레이블을 쌓아 여러 case를 그룹화 (fall-through)하여 동일한 결과를 공유할 수 있습니다:
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;
}직접 해보기
public class ConvertGradeToPoints
{
// convertGradeToPoints 메서드를 구현하세요
public static int convertGradeToPoints(string letterGrade)
{
// 여기에 코드를 작성하세요
}
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리 및 흐름의 모든 레슨
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