C# 레코드 (개발자를 위한 작동 원리)
C# 레코드는 불변 데이터 모델을 쉽게 생성하고 보일러플레이트 코드를 줄임으로써 코딩 경험을 향상시키기 위해 도입된 강력한 기능입니다. 이 튜토리얼은 C#의 레코드 개념을 초보자에게 설명하며, 구문, 사용법 및 장점을 안내합니다.
데이터 전송 객체, 구성 또는 간단히 데이터를 효율적으로 표현하는 방법이 필요한 경우, C# 레코드는 간결하고 개발자 친화적인 접근 방식을 제공합니다. 이 문서에서는 나중에 IronPDF에 대해서도 논의할 것입니다.
C# 레코드란 무엇입니까?
C#에서 레코드는 불변 데이터 모델을 정의하기 위한 간소화된 구문을 제공하는 참조 유형입니다. 전통적인 클래스 정의와 달리, 레코드는 참조 동등성보다 값 기반 동등성을 강조합니다. 이는 두 레코드 인스턴스가 동일한 객체 위치를 메모리에서 가리키는 것이 아니라 속성 값이 동일한 경우에 동등하다고 간주된다는 것을 의미합니다.
레코드 유형: 클래스 및 구조체
C#에서는 두 가지 주요 유형의 레코드가 있습니다:
- Record 클래스: 기본 레코드 타입으로 참조 타입입니다.
- Record 구조체: 값 타입이 필요한 시나리오를 위해 도입되었습니다. 기본적으로 불변이며 레코드 클래스와 유사하게 값 기반 비교를 제공합니다.
레코드 선언
레코드를 선언하는 것은 간단합니다. record 키워드 뒤에 타입(클래스 또는 구조체)과 레코드 이름을 사용하여 레코드를 정의할 수 있습니다. 예를 들어, 간단한 사람 레코드는 다음과 같이 선언할 수 있습니다:
public record class Person(string FirstName, string LastName);
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);
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: True
var person1 = new Person("Iron", "Software");
var person2 = new Person("Iron", "Software");
Console.WriteLine(person1 == person2); // Output: True
Dim person1 = New Person("Iron", "Software")
Dim person2 = New Person("Iron", "Software")
Console.WriteLine(person1 = person2) ' Output: True
person1과 person2는 두 개의 개별적인 인스턴스이지만, 자신의 속성 값에 따라 동일한 것으로 간주되어 값 기반 동등성을 보여줍니다. 이는 참조 타입의 기본 동작으로부터의 중요한 탈피로, 참조 동등성을 중심으로 합니다.
불변의 속성
설계에 의해, 레코드 속성은 불변입니다. 이는 레코드 인스턴스가 생성된 후에는 속성 값을 변경할 수 없음을 의미합니다.
// This will result in a compilation error
// person1.FirstName = "Jane";
// 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);
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" };
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);
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 패키지를 찾아 설치를 클릭합니다.

또는 패키지 관리자 콘솔에서 명령어를 사용하여 설치할 수 있습니다:
Install-Package 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");
}
}
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을 사용하여 구매 결정을 내리기 전에 기능을 테스트할 기회를 제공합니다. 소프트웨어가 요구 사항을 충족한다고 판단되면 $799부터 시작하는 라이선스를 구매할 수 있습니다.
자주 묻는 질문
어떻게 C#에서 레코드를 사용하여 PDF를 생성할 수 있습니까?
C# 레코드는 데이터를 효율적으로 저장하는 데 사용될 수 있으며, 그 데이터는 IronPDF에 의해 PDF 문서로 변환될 수 있습니다. 필요한 데이터를 보유할 레코드를 생성하고 IronPDF를 사용하여 이 데이터를 PDF 형식으로 렌더링할 수 있습니다.
C# 레코드를 사용하는 이점은 무엇입니까?
C# 레코드는 단순화된 문법, 불변 데이터 모델, 값 기반 동등성, 상속 지원을 포함한 여러 이점을 제공합니다. 이러한 기능은 레코드를 간결하고 신뢰할 수 있는 데이터 중심 타입을 생성하는 데 적합하게 합니다.
C#에서 레코드는 동등성을 어떻게 처리합니까?
C#에서 레코드는 값 기반 동등성에 중점을 둡니다. 이는 두 개의 레코드 인스턴스가 메모리에서의 위치와 관계없이 속성 값이 일치하면 동등하다고 간주된다는 것을 의미합니다.
어떻게 C#에서 레코드를 선언합니까?
C#에서 레코드는 record 키워드를 사용하여 타입(클래스 또는 구조체)과 레코드의 이름을 따라 선언됩니다. 예를 들어, public record class Person(string FirstName, string LastName);.
레코드 클래스와 레코드 구조체의 차이점은 무엇입니까?
레코드 클래스는 참조 타입이고, 레코드 구조체는 값 타입입니다. 둘 다 불변성과 값 기반 비교를 제공하지만, 메모리 할당과 사용 사례에서 차이가 있습니다.
C# 레코드 생성 후 속성을 수정할 수 있습니까?
C# 레코드는 불변으로 설계되어 생성 후 속성을 변경할 수 없습니다. 그러나 수정된 속성으로 새 레코드 인스턴스를 생성하는 비파괴적 변경을 수행할 수 있습니다.
IronPDF는 C# 애플리케이션을 어떻게 향상시킵니까?
IronPDF는 PDF 문서를 생성, 편집 및 조작하는 견고한 기능을 제공함으로써 C# 애플리케이션을 향상시킵니다. 개발자가 HTML 콘텐츠로부터 PDF를 생성할 수 있어 문서 관리에 다재다능한 도구입니다.
.NET 프로젝트에서 IronPDF를 설치하는 방법은?
Visual Studio의 NuGet 패키지 관리자를 사용하거나 패키지 관리자 콘솔에서 Install-Package IronPdf 명령을 실행하여 .NET 프로젝트에 IronPDF를 설치할 수 있습니다.
C# 레코드에서 비파괴적 변경은 어떻게 작동합니까?
C# 레코드에서 비파괴적 변경은 기존 인스턴스를 변경하지 않고 일부 속성이 수정된 새 레코드 인스턴스를 생성할 수 있습니다.
C# 개발에서 PDF 라이브러리는 무엇에 사용됩니까?
IronPDF와 같은 PDF 라이브러리는 C# 개발에서 PDF 문서를 생성, 편집 및 조작하는 데 사용됩니다. 개발자가 애플리케이션에 PDF 기능을 효과적으로 통합하도록 도와줍니다.




