본문 바로가기
C#

C#의 record

by haheehee 2023. 10. 25.

C#의 record는 C# 9.0 버전부터 도입된 새로운 데이터 구조입니다. Record는 불변(immutable) 데이터 유형을 정의하는데 사용되며, 간결한 구문으로 클래스보다 간편하게 작성할 수 있습니다. Record는 레퍼런스 타입으로 생성되며, 값 타입과는 다릅니다.

Record를 정의하려면 record 키워드를 사용합니다. Record를 정의하면 C# 컴파일러가 자동으로 일부 기본 구현을 생성하며, 데이터를 수정할 수 없도록 설계됩니다. Record의 주요 특징은 다음과 같습니다:


  1. 값 불변성(Immutability): Record의 필드는 기본적으로 읽기 전용(readonly)으로 생성되며 수정할 수 없습니다. 이것은 데이터의 안정성과 일관성을 보장합니다.
  2. 값 비교(Structural Equality): Record는 자동으로 구조적 동등성(Structural Equality)을 지원하며, 두 개의 Record 인스턴스의 필드 값이 같은지 비교하는데 사용할 수 있는 Equals 및 GetHashCode 메서드를 생성합니다.
  3. Deconstruction: Record에서는 deconstruct 메서드를 사용하여 Record의 각 필드를 분해하고 변수에 할당할 수 있습니다.
  4. 패턴 매칭(Pattern Matching): Record는 패턴 매칭에 적합하며, switch 문 등을 사용하여 다양한 패턴으로 Record 인스턴스를 처리할 수 있습니다.

 

record Person(string FirstName, string LastName);

var person1 = new Person("John", "Doe");
var person2 = new Person("John", "Doe");

// 구조적 동등성을 통해 비교
if (person1 == person2)
{
    Console.WriteLine("They are equal.");
}

// Deconstruction
var (first, last) = person1;
Console.WriteLine($"First Name: {first}, Last Name: {last}");

Record는 데이터 전달 객체(Data Transfer Object, DTO) 또는 불변 데이터 구조를 정의하는데 유용하며, 코드를 간소화하고 가독성을 높일 수 있습니다. C# 9.0 이상에서 사용 가능하며, 다양한 응용 프로그램에서 데이터 관리를 간소화하고 안전성을 높이는데 도움이 됩니다.

'C#' 카테고리의 다른 글

C# Dictionary 딕셔너리  (0) 2023.11.07
#2 kioskProject - CRUD, ORM  (0) 2023.08.31
#1 kioskProject - erd diagram  (0) 2023.08.31
C# study  (0) 2023.08.30

댓글