C#은 표준적인 제어 흐름 구문 — 조건문(if, switch), 반복문(, , ), 분기(, , ) — 에 더해 switch 식과 패턴 매칭 같은 현대적 개선을 제공하여 코드를 더 간결하게 만듭니다.
forforeachwhilebreakcontinuereturnif (score >= 90)
grade = "A";
else if (score >= 80)
grade = "B";
else
grade = "F";
// 삼항 연산자와 null 병합
string status = age >= 18 ? "adult" : "minor";
string name = input ?? "default"; // ?? — input이 null이면 기본값 사용
name ??= "fallback"; // ??= null이면 대입
// 전통적인 switch
switch (day)
{
case "Sat":
case "Sun":
type = "weekend";
break; // break 필요(fall-through 없음)
default:
type = "weekday";
break;
}
// switch 식(C# 8) — 간결하고 값을 반환하며 패턴 매칭 지원
string type = day switch
{
"Sat" or "Sun" => "weekend",
_ => "weekday", // _ = 기본
};
// switch에서의 패턴 매칭
string describe = obj switch
{
int n when n > 0 => "positive int",
string s => $"string of length {s.Length}",
null => "null",
_ => "other",
};
현대적 switch 식은 간결하며(값을 반환, break 없음), 강력한 패턴 매칭(타입, 조건 등을 매칭)을 지원합니다 — 장황한 전통적 switch에 비해 큰 개선입니다.
for (int i = 0; i < 10; i++) { }
foreach (var item in collection) { } // 모든 IEnumerable 순회
while (condition) { }
do { } while (condition); // 최소 한 번 실행
foreach(모든 IEnumerable 순회)는 컬렉션을 위한 관용적인 반복문입니다.
foreach (var item in items)
{
if (item.Skip) continue; // 다음 반복
if (item.Stop) break; // 루프 종료
}
return result; // 메서드 종료
제어 흐름은 모든 프로그램에서 논리를 표현하는 기본 메커니즘이므로 C#의 구문을 이해하는 것은 근본적인 일상 지식입니다.
기본은 표준적이지만, 현대적 C# 개선은 알고 사용할 가치가 있습니다. switch 식(C# 8+)은 전통적 switch에 비해 큰 개선입니다 — 간결하고 값을 반환하며, fall-through 버그가 없고(break 누락 없음), 패턴 매칭(타입, 조건, 값, 구조 매칭)을 지원하여 복잡한 조건 논리를 중첩 if-else 사슬보다 훨씬 깔끔하게 만듭니다.
null 병합 연산자(??, ??=)는 깔끔한 null 처리를 제공하고, foreach는 컬렉션을 순회하는 관용적인 방법입니다.
이 구문들을 알고 현대적이고 더 표현력 있는 형태를 선호하는 것(장황한 switch 문보다 패턴 매칭을 사용한 switch 식, 기본값에는 null 병합)은 깔끔하고 관용적인 C#을 작성하기 위한 일상 지식입니다.
특히 switch 식과 패턴 매칭은 더 함수형이고 간결한 코드를 향한 현대 C#의 진화를 반영하므로, 더 나은 코드를 작성하기 위해서나 이러한 기능을 광범위하게 사용하는 현재의 C# 코드베이스를 읽기 위해서 이해하는 것이 중요합니다.