“하지만 이건 할 일이 너무 많다”라고 우는 소리가 들린다. 동의한다. 불변 클래스를 만드는 것은 이 정도로 어렵지는 않을 것이다. 다행히 C# 팀은 이것을 훨씬 더 쉽게 하기 위해 C# 9.0에 record types라는 새로운 구조를 도입했다. 하지만 C# 9.0을 사용할 수 없다면 결정을 내려야 한다. 버그를 줄이고 싶은가, 아니면 최대한 빨리 코딩을 끝내고 싶은가?
우리를 도와줄 record types
C# 9.0은 record types를 도입하여 불변 클래스를 매우 쉽게 만들 수 있다. 예를 들어 코드 2-3의 클래스를 다음과 같이 간단히 표현할 수 있다.
public record ConferenceRegistration( string CampaignSource, string FirstName, string? MiddleName, string LastName, string Email, DateTimeOffset CreatedOn);
매개변수 목록에서 지정한 인수와 같은 이름의 속성을 자동으로 초기 설정하고 속성을 불변으로 만들기 때문에 record 코드는 코드 2-3에 표시된 클래스와 정확히 동일하게 동작한다. 세미콜론으로 선언을 끝내는 대신 일반 클래스처럼 record 블록 본문에 메서드와 추가 생성자를 추가할 수도 있다. 정말 대단하며 시간도 아낄 수 있다.