switch 식과 when을 사용한 모든 경우 검사(C# 6 에뮬레이션)
기존 switch-반환 메서드로 switch 식을 에뮬레이션하고, 보호 검사를 추가하며, 처리되지 않은 경우를 실행 중 발견하도록 default에서 예외를 던집니다.
switch 식과 when을 사용한 모든 경우 검사(C# 6 에뮬레이션)은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 3개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 3개의 강의가 포함되어 있습니다.
계획: switch 흉내 내기
목표: C# 6에서 최신 switch 식을 흉내 냅니다.
- 기존 switch에서 값 반환하기
- 가드로 사전 확인하기
- 모든 경우를 처리하기 위해 default throw로 즉시 실패하기
값을 반환하는 switch
스위치가 값을 반환하면 스위치 식처럼 동작합니다. 기본값에서 예외를 발생시키는 처리가 알 수 없는 값을 처리합니다.
using System;
public enum Grade { A, B, C, D, F }
public class Program
{
static string Describe(Grade g)
{
switch (g)
{
case Grade.A: return "Excellent";
case Grade.B: return "Good";
case Grade.C: return "Average";
case Grade.D: return "Below average";
case Grade.F: return "Fail";
default: throw new ArgumentOutOfRangeException("g");
}
}
public static void Main(string[] args)
{
Console.WriteLine(Describe(Grade.A));
Console.WriteLine(Describe(Grade.F));
}
}
가드를 통한 조건 분기
가드 검사(조건문)를 사용하여 조건절을 흉내 냅니다. 먼저 입력을 검증한 다음 범위에 따라 분기합니다.
using System;
public class Program
{
// Emulate: switch(score) { case var s when s >= 90: ... } using pre-guards
static string LabelScore(int score)
{
if (score < 0 || score > 100) throw new ArgumentOutOfRangeException("score");
if (score >= 90) return "A";
if (score >= 80) return "B";
if (score >= 70) return "C";
if (score >= 60) return "D";
return "F";
}
public static void Main(string[] args)
{
Console.WriteLine(LabelScore(92)); // A
Console.WriteLine(LabelScore(77)); // C
}
}
모든 경우 처리를 위한 도우미
작은 Exhaustive.Unhandled 도우미를 추가하고 기본값 분기에서 호출합니다. 새로운 열거형 값이 처리되지 않으면 테스트가 실패합니다.
using System;
public enum Status { New, Active, Closed }
public static class Exhaustive
{
public static Exception Unhandled(object x)
{
return new InvalidOperationException("Unhandled case: " + x);
}
}
public class Program
{
static int ToHttp(Status s)
{
switch (s)
{
case Status.New: return 201;
case Status.Active: return 200;
case Status.Closed: return 410;
default: throw Exhaustive.Unhandled(s);
}
}
public static void Main(string[] args)
{
Console.WriteLine(ToHttp(Status.Active)); // 200
}
}
가드 + 종류별 스위치 분기
사전 가드로 각 분기의 데이터를 검증한 다음 판별자에 따라 스위치로 분기합니다. 이는 각 경우에 조건절을 적용하는 방식과 같습니다.
using System;
public enum ShapeKind { Circle, Square }
public sealed class Shape
{
public ShapeKind Kind;
public double Radius; // for circle
public double Side; // for square
}
public class Program
{
static double Area(Shape s)
{
if (s == null) throw new ArgumentNullException("s");
// “when” guards (validate needed fields)
if (s.Kind == ShapeKind.Circle && s.Radius < 0) throw new ArgumentException("Radius must be >= 0");
if (s.Kind == ShapeKind.Square && s.Side < 0) throw new ArgumentException("Side must be >= 0");
switch (s.Kind)
{
case ShapeKind.Circle: return Math.PI * s.Radius * s.Radius;
case ShapeKind.Square: return s.Side * s.Side;
default: throw new InvalidOperationException("Unhandled shape: " + s.Kind);
}
}
public static void Main(string[] args)
{
Shape c = new Shape { Kind = ShapeKind.Circle, Radius = 2.0 };
Console.WriteLine("Area circle = " + Area(c));
}
}
팁과 주의점
팁:
- 작고 값을 반환하는 메서드를 우선 사용합니다(단일 책임).
- 누락된 경우를 조기에 드러내도록 기본값에서 예외를 발생시키는 처리를 유지합니다.
- 스위치 앞에 가드를 배치합니다. 가드는 조건절처럼 동작합니다.
모든 경우 처리 에뮬레이션
복습
복습: 일반적인 스위치에서 스위치 식처럼 값을 반환하고, 조건절을 위한 가드를 추가하며, 누락된 경우를 드러내도록 기본값에서 예외를 발생시키는 처리를 유지합니다.
자주 묻는 질문
“switch 식과 when을 사용한 모든 경우 검사(C# 6 에뮬레이션)” 강의는 무료인가요?
네 — “switch 식과 when을 사용한 모든 경우 검사(C# 6 에뮬레이션)” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 3개의 강의가 포함되어 있습니다.
“switch 식과 when을 사용한 모든 경우 검사(C# 6 에뮬레이션)”에서 뭘 배우나요?
기존 switch-반환 메서드로 switch 식을 에뮬레이션하고, 보호 검사를 추가하며, 처리되지 않은 경우를 실행 중 발견하도록 default에서 예외를 던집니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
C# Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 2번째 강의입니다.
“switch 식과 when을 사용한 모든 경우 검사(C# 6 에뮬레이션)” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- is 패턴과 관계·논리 패턴(C# 6 에뮬레이션)
- switch 식과 when을 사용한 모든 경우 검사(C# 6 에뮬레이션)
- 판별 합집합을 활용한 도메인 모델링(record)(C# 6 에뮬레이션)