52. string 에 대한 switch 문의 컴파일러 변환 (해시 점프 vs 순차 비교)
난이도 중 해설 보기 →
결함을 모두 찾고 원인·수정안·더 나은 설계를 제시하라. 마커
(A)(B) 는 주목 위치 힌트다.
결함 코드 · C#
// 주제: string 에 대한 switch 문의 컴파일러 변환 (내부 동작)
//
// 과제:
// 1) 아래 RouteFew(2개 케이스)와 RouteMany(8개 케이스)를 C# 컴파일러가
// 각각 어떤 IL 로 낮추는지(lowering) 예측하라. 케이스 수에 따라 전략이
// 어떻게 달라지는가?
// 2) string switch 의 비교는 어떤 규칙(문화권/대소문자/서수)을 따르는가?
// "ROUTE" 와 "route" 는 같은 케이스로 가는가?
// 3) 케이스가 많을 때 내부적으로 무엇이 생성되며, 왜 그것이 O(1) 에 가까운
// 디스패치를 주는지 설명하라. null 입력은 어떻게 처리되는가?
using System;
public static class OpcodeRouter
{
public static int RouteFew(string op) => op switch
{
"move" => 1,
"attack" => 2,
_ => 0,
};
public static int RouteMany(string op) => op switch
{
"move" => 1,
"attack" => 2,
"cast" => 3,
"loot" => 4,
"trade" => 5,
"chat" => 6,
"party" => 7,
"logout" => 8,
_ => 0,
};
} 내 리뷰 · C#
내 답안 · 자동 저장
작성 후 위 해설 보기에서 모범 해설과 대조하세요.