(C#) record [C# 9.0 이상]

장장·2025년 9월 25일

불변성이란?

record는 C# 9.0부터 도입된 개념으로 불변의 멤버 변수를 가질 수 있도록 하는 클래스이다.

어떨때 쓰면 좋을까?

불변성 : init 속성만 제공해 값 변경 불가, 안전한 데이터 객체 생성
값 기반 비교 : Equals()와 == 가 내용을 기준으로 비교
복사 편리 : with 키워드로 불변 객체 복사 쉽게 가능

사용법

public record Person
{
    public string Name { get; init; }
}
public class PersonClass
{
    public string Name { get; set; }
}

static void Main(string[] args)
{
    Person p1 = new Person { Name = "Alice" };
    Person p2 = new Person { Name = "Alice"};
    PersonClass pClass1 = new PersonClass { Name = "Bob" };
    PersonClass pClass2 = new PersonClass { Name = "Bob" };
    Console.WriteLine(p1 == p2); // True
    Console.WriteLine(pClass1 == pClass2); //False

    var p3 = p1 with { Name = "Chris" }; //값 일부 변경한 새 객체 생성 

}

사용예시?

아래 상황에 사용 한다고 한다

  • Web API 요청/응답 DTO
  • Command / Query 객체 (CQRS 패턴)
  • 메시지 큐 전송 객체
  • 유닛 테스트용 입력값 모델

0개의 댓글