레코드 형식
추천 자료: ASP.NET Core 인증 및 권한 부여
레코드(Record)
C# 9.0부터 도입된 레코드 형식은 불변 개체를 쉽게 정의할 수 있는 참조 타입입니다.
record
는 동일한 값을 가지면 같은 것으로 간주되는 값 비교(Value Equality)를 기본으로 하며, 생성된 이후 변경할 수 없는 불변성(Immutability)을 가지며, with
식을 활용하여 새로운 값을 가진 개체를 생성할 수 있고, 일반적인 class
보다 짧고 간결한 코드로 정의할 수 있습니다.
다음 예제는 record
를 사용하여 불변 개체를 생성하고 값을 변경하는 방법을 보여줍니다.
코드: RecordDemo.cs
using System;
// 구독자 정보를 나타내는 레코드
record Subscriber(string Title, int Duration, bool IsAvailable);
class RecordDemo
{
static void Main()
{
// 구독자 개체 생성
var subscriber = new Subscriber("Visual", 3, true);
// 새로운 제목을 가진 개체 생성
var vip = subscriber with { Title = "VIP" };
Console.WriteLine(vip);
// 개체 값 분해
var (title, duration, isAvailable) = subscriber;
Console.WriteLine($"{title} - {duration} - {isAvailable}");
}
}
Subscriber { Title = VIP, Duration = 3, IsAvailable = True }
Visual - 3 - True
이 코드는 Subscriber
개체를 생성하고, with
식을 사용하여 새로운 개체를 만들고, 값을 분해하는 방법을 보여줍니다.
record class
는 참조 타입이며, record struct
는 값 타입으로 동작합니다.
코드: RecordStructDemo.cs
using System;
// 직원 정보를 나타내는 레코드 클래스
public record class EmployeeClass(string Name, int Age);
// 직원 정보를 나타내는 레코드 구조체
public record struct EmployeeStruct(string Name, int Age);
class RecordStructDemo
{
static void Main()
{
// 직원 개체 생성
var employee1 = new EmployeeClass("홍길동", 21);
// 새로운 나이를 가진 개체 생성
var employee2 = employee1 with { Age = 31 };
Console.WriteLine(employee2);
}
}
EmployeeClass { Name = 홍길동, Age = 31 }
이 코드는 record class
와 record struct
의 차이를 보여주며, with
식을 사용하여 개체를 변경하는 방법을 설명합니다.
레코드는 클래스보다 간결한 코드로 사용될 수 있으나, 이 강의 전체에서는 클래스를 첫 번째 기준으로 사용합니다.
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!