본문 바로가기

C#9

C# 프로퍼티 패턴(Property Patterns) 활용 예제 프로퍼티 패턴은 객체의 속성을 이름으로 매칭해 조건을 간결하게 표현하는 기능입니다. 복잡한 if 중첩 없이 명확하고 읽기 쉬운 검사 로직을 작성할 수 있습니다. 아래 예제로 실제 코드에서 바로 활용하는 방법을 정리합니다.1. 예제 도메인 모델모든 예제에서 공통으로 사용하는 간단한 도메인 타입입니다.using System;enum OrderStatus{ Pending, Paid, Shipped, Cancelled}sealed class Order{ public Customer? Customer { get; init; } public decimal Total { get; init; } public OrderStatus Status { get; init; } publ.. 더보기
C# 레코드 타입 (Record) 1. 개념 설명레코드는 기본적으로 참조형이지만 값 기반 동등성(value-based equality)을 제공하는 타입입니다. 생성자 매개변수나 init 접근자로 불변 모델을 쉽게 만들고, 자동으로 Equals/GetHashCode/ToString이 생성됩니다. 또한 with 식으로 일부 속성만 바꾼 복사본을 만들 수 있어 DTO, 상태 스냅샷에 적합합니다. 필요 시 값 형식인 record struct도 사용할 수 있습니다.2. 코드 예제다음 예제는 레코드의 값 비교, with 복사, 분해를 보여줍니다. 콘솔에 결과가 순서대로 출력됩니다.public record Person(string Name, int Age);var p1 = new Person("Kim", 30);var p2 = new Person(".. 더보기
C# 패턴 매칭 (Pattern Matching) 패턴 매칭은 값의 형식과 형태를 검사해 분기하는 기능입니다. is 키워드와 switch 문/식에서 타입, 상수, 관계, 조합 패턴을 사용할 수 있습니다. 분기 로직을 간결하게 만들고, when 가드로 조건을 정교하게 표현합니다.1. 개념 설명타입 패턴은 객체가 특정 타입인지 확인하며 변수로 바인딩합니다. 관계/상수 패턴은 숫자 범위나 특정 값 매칭에 유용합니다. switch 식을 쓰면 매핑 로직을 표현적으로 작성할 수 있습니다.2. 코드 예제아래 예제는 is 패턴과 switch 식을 함께 사용해 다양한 입력을 설명합니다.using System;class Program{ static string Describe(object input) => input switch { null => .. 더보기