
C# 레코드 (개발자를 위한 작동 원리)
C# 레코드는 불변 데이터 모델을 쉽게 생성하고 보일러플레이트 코드를 줄임으로써 코딩 경험을 향상시키기 위해 도입된 강력한 기능입니다. 이 튜토리얼은 C#의 레코드 개념을 초보자에게 설명하며, 구문, 사용법 및 장점을 안내합니다.
데이터 전송 객체, 구성 또는 간단히 데이터를 효율적으로 표현하는 방법이 필요한 경우, C# 레코드는 간결하고 개발자 친화적인 접근 방식을 제공합니다. 이 문서에서는 나중에 IronPDF에 대해서도 논의할 것입니다.
C# 레코드란 무엇인가?
C#에서 레코드는 불변 데이터 모델을 정의하기 위한 간소화된 구문을 제공하는 참조 유형입니다. 전통적인 클래스 정의와 달리, 레코드는 참조 동등성보다 값 기반 동등성을 강조합니다. 이는 두 레코드 인스턴스가 동일한 객체 위치를 메모리에서 가리키는 것이 아니라 속성 값이 동일한 경우에 동등하다고 간주된다는 것을 의미합니다.
레코드 유형: 클래스 및 구조체
C#에서는 두 가지 주요 유형의 레코드가 있습니다:
- Record 클래스: 기본 레코드 타입으로 참조 타입입니다.
- Record 구조체: 값 타입이 필요한 시나리오를 위해 도입되었습니다. 기본적으로 불변이며 레코드 클래스와 유사하게 값 기반 비교를 제공합니다.
레코드 선언
레코드를 선언하는 것은 간단합니다. record 키워드 뒤에 타입(클래스 또는 구조체)과 레코드 이름을 사용하여 레코드를 정의할 수 있습니다. 예를 들어, 간단한 사람 레코드는 다음과 같이 선언할 수 있습니다:
public record class Person(string FirstName, string LastName);'INSTANT VB TODO TASK: C# 'records' are not converted by Instant VB:
'public record class Person(string FirstName, string LastName)이 선언은 FirstName과 LastName에 대한 위치 매개변수를 포함하며, 기본적으로 이러한 속성에 대한 공개 속성과 주요 생성자를 생성합니다.
레코드의 불변성
레코드는 불변으로 설계되어 있으며, 이는 레코드 인스턴스가 생성된 후에는 속성 값을 변경할 수 없음을 의미합니다. 이 불변성은 예측 가능한 스레드 안전한 애플리케이션을 생성하는 데 매우 중요하며, 특히 동시 작업을 처리할 때 유용합니다.
불변의 레코드 구조체
불변의 레코드 구조체는 레코드 클래스와 비슷한 방식으로 선언되지만 record 구조체 문법을 사용합니다. 이는 레코드의 불변성과 값 기반 비교 특징을 값 타입의 성능 이점과 결합합니다:
public readonly record struct ImmutablePerson(string FirstName, string LastName);'INSTANT VB TODO TASK: C# 'records' are not converted by Instant VB:
'public readonly record struct ImmutablePerson(string FirstName, string LastName)레코드 작업
레코드는 데이터 중심 타입의 생성 및 사용을 단순화합니다. 상속을 지원하고 비파괴적 수정이 가능하며, 디버깅을 용이하게 하는 내장 포맷팅을 제공합니다. 이러한 기능을 예제를 통해 살펴보겠습니다.
레코드 생성 및 비교
다음 예제를 고려해보세요. 여기서는 사람 레코드의 두 인스턴스를 생성합니다:
var person1 = new Person("Iron", "Software");
var person2 = new Person("Iron", "Software");
Console.WriteLine(person1 == person2); // Output: TrueDim person1 = New Person("Iron", "Software")
Dim person2 = New Person("Iron", "Software")
Console.WriteLine(person1 = person2) ' Output: Trueperson1과 person2는 두 개의 개별적인 인스턴스이지만, 자신의 속성 값에 따라 동일한 것으로 간주되어 값 기반 동등성을 보여줍니다. 이는 참조 타입의 기본 동작으로부터의 중요한 탈피로, 참조 동등성을 중심으로 합니다.
불변의 속성
설계에 의해, 레코드 속성은 불변입니다. 이는 레코드 인스턴스가 생성된 후에는 속성 값을 변경할 수 없음을 의미합니다.
// This will result in a compilation error
// person1.FirstName = "Jane";' This will result in a compilation error
' person1.FirstName = "Jane";레코드를 사용한 상속
레코드는 상속을 지원하여 데이터 모델 계층 구조를 생성할 수 있습니다. 다음은 기본 레코드를 확장하는 방법입니다:
public record Employee(string FirstName, string LastName, string Department) : Person(FirstName, LastName);'INSTANT VB TODO TASK: C# 'records' are not converted by Instant VB:
'public record Employee(string FirstName, string LastName, string Department) : Person(FirstName, LastName)이 Employee 레코드는 Person을 확장하여 추가적으로 Department 속성을 추가합니다.
고급 레코드 기능
비파괴적 수정
레코드는 일부 속성이 수정된 상태로 기존 레코드 인스턴스에서 새로운 레코드 인스턴스를 생성하는 내장 메서드를 제공하며, 이를 비파괴적 수정이라고 합니다.
var updatedPerson = person1 with { FirstName = "Jane" };'INSTANT VB TODO TASK: C# 'with expressions' are not converted by Instant VB:
'var updatedPerson = person1 with { FirstName = "Jane" }내장 포맷팅
레코드는 디버깅과 로깅을 더 쉽게 할 수 있는 내장 포맷팅을 제공하며, 자동으로 속성에 대한 문자열 표현을 제공해 줍니다.
Console.WriteLine(person1);Console.WriteLine(person1)C# 레코드를 사용하는 장점
- 단순화된 문법: 레코드는 보일러플레이트 코드를 줄이며, 모델을 더 간결하고 읽기 쉽게 만듭니다.
- 불변의 데이터 모델: 레코드의 불변성은 스레드 안전한 애플리케이션을 생성하는 데 도움이 됩니다.
- 값 기반 동등성: 레코드는 참조 동등성 대신 값 기반 동등성을 사용하여 데이터 중심 타입에 이상적입니다.
- 상속 지원: 레코드는 다른 레코드로부터 상속할 수 있어 코드 재사용 및 계층적 데이터 모델을 허용합니다.
IronPDF 소개: C# PDF 라이브러리

IronPDF 개요는 .NET 개발자를 위한 PDF 라이브러리로, C# 애플리케이션 내에서 PDF 문서를 생성, 편집 및 조작하도록 설계되었습니다. IronPDF는 HTML 콘텐츠, CSS, 이미지, JavaScript에서 PDF 렌더링을 지원합니다.
그 핵심 기능은 웹 콘텐츠에서 PDF 문서를 생성하는 것으로, HTML 문자열, URL, ASPX 웹 폼을 PDF 파일로 변환하는 간소화된 접근 방식을 제공합니다. IronPDF는 양식 애플리케이션, 서버 애플리케이션 및 웹 애플리케이션을 포함한 다양한 애플리케이션에서 효율적으로 작동합니다.
IronPDF 라이브러리 설치 방법
IronPDF 설치는 간단하며 Visual Studio의 NuGet 패키지 관리자에서 수행할 수 있습니다. 다음 단계를 따르세요:
- Visual Studio에서 솔루션 탐색기로 이동하여 참조 항목을 오른쪽 클릭한 다음 NuGet 패키지 관리를 선택합니다.
- NuGet 패키지 관리자에서 브라우즈를 선택하고 "IronPDF"를 검색합니다.
- IronPDF 패키지를 찾아 설치를 클릭합니다.

또는 패키지 관리자 콘솔에서 명령어를 사용하여 설치할 수 있습니다:
예제: IronPDF와 C# 레코드 사용하기
C# 레코드를 사용하여 데이터를 저장하고 이를 활용해 IronPDF로 PDF 문서를 생성하는 실질적인 예를 고려해 봅시다:
public record Person(string FirstName, string LastName);
class Program
{
static void Main(string[] args)
{
// Create an instance of the Person record.
var person = new Person("Iron", "Developer");
// Initialize a new renderer object for generating PDF files using Chrome's rendering engine.
var renderer = new IronPdf.Rendering.ChromePdfRenderer();
// Render an HTML string as a PDF document.
var pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {person.FirstName} {person.LastName}</p>");
// Save the PDF to the specified location.
pdf.SaveAs("PersonRecord.pdf");
}
}'INSTANT VB TODO TASK: C# 'records' are not converted by Instant VB:
'public record Person(string FirstName, string LastName)
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Create an instance of the Person record.
Dim person As New Person("Iron", "Developer")
' Initialize a new renderer object for generating PDF files using Chrome's rendering engine.
Dim renderer = New IronPdf.Rendering.ChromePdfRenderer()
' Render an HTML string as a PDF document.
Dim pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {person.FirstName} {person.LastName}</p>")
' Save the PDF to the specified location.
pdf.SaveAs("PersonRecord.pdf")
End Sub
End Class이 예제는 간단한 Person 레코드를 생성하고, IronPDF를 사용하여 해당 사람의 이름을 표시하는 PDF 문서를 생성합니다. 이는 C# 레코드가 .NET 애플리케이션에서 PDF 생성과 얼마나 매끄럽게 통합될 수 있는지를 보여줍니다.

IronPDF 라이선싱
IronPDF는 개별 및 상업적 옵션을 포함한 다양한 요구에 맞춘 여러 라이선스를 제공하는 상업적 제품입니다. 각 구매는 평생 라이선스와 30일 환불 보증을 포함합니다. IronPDF 라이선스 옵션을 구매 전에 탐색하세요.
결론
C# 레코드는 .NET 애플리케이션에서 데이터 모델링을 단순화하는 중요한 진전입니다. 레코드를 이해하고 활용함으로써, 개발자는 더 신뢰할 수 있고, 유지 관리가 용이하며, 읽기 쉬운 코드 기반을 만들 수 있습니다.
대규모 애플리케이션이든 간단한 데이터 구조이든 상관없이, 불변성에서 값 기반의 평등성에 이르기까지 레코드가 제공하는 기능들은 C# 도구 키트에서 필수적인 도구입니다.
IronPDF는 IronPDF Free Trial을 사용하여 구매 결정을 내리기 전에 기능을 테스트할 기회를 제공합니다. 소프트웨어가 필요에 맞는다고 생각되면 $999에서 시작하는 라이선스를 구매할 수 있습니다.

제이콥 멜러는 Iron Software의 최고 기술 책임자(CTO)이자 C# PDF 기술을 개척한 선구적인 엔지니어입니다. Iron Software의 핵심 코드베이스를 최초로 개발한 그는 창립 초기부터 회사의 제품 아키텍처를 설계해 왔으며, CEO인 캐머런 리밍턴과 함께 회사를 NASA, 테슬라, 그리고 전 세계 정부 기관에 서비스를 제공하는 50명 이상의 직원을 보유한 기업으로 성장시켰습니다.
관련 기사


