IRONSOFTWAREHOME
개발자 업데이트

C# Init 키워드 (개발자를 위한 작동 방식)

제이콥 멜러, 팀 아이언 최고기술책임자
Jacob Mellor
Updated: 2026년 4월 21일

C# 9.0의 init 키워드는 불변 객체 생성에 대한 클래스 속성을 정의하는 새로운 방법을 도입했습니다. 이전의 C# 버전에서는, 속성은 일반적으로 get 및 set 접근자로 객체 필드를 읽고 쓸 수 있도록 사용되었습니다. 그러나 init을 사용하면 객체 초기화 동안에만 쓸 수 있는 속성을 만들어 이후에는 읽기 전용으로 유지할 수 있습니다.

이 튜토리얼에서는 실용적인 예제와 시나리오를 통해 IronPDF 라이브러리와 함께 C# init 키워드를 사용하는 방법을 탐색할 것입니다. 전통적인 속성 설정자(set)와 새로운 init 전용 설정자 사이의 중요한 차이점도 배우게 됩니다.

Init 키워드의 기본 예제

기본 예제부터 시작해 봅시다:

public class Person
{
    public string FirstName { get; init; }
    public string LastName { get; init; }
}

var person = new Person
{
    FirstName = "Iron",
    LastName = "Dev"
};

// person.FirstName = "Jane";  // This will give a compile-time error.

C# Init 키워드 (개발자를 위한 동작 방식): 그림 1 - 속성이 init-only로 표시되어 있어 IDE에서 오류 발생

이 예제에서는 FirstNameLastName가 init-only 속성으로 표시됩니다. 이는 객체 초기화 중에만 할당될 수 있음을 의미합니다. 객체가 생성된 후 값을 변경하려고 하면 컴파일 타임 오류가 발생합니다.

Init 키워드를 사용하는 이유

init 키워드를 사용하는 주요 이유는 객체 속성을 초기화 후 불변으로 만드는 것입니다. 전통적으로 불변성을 달성하기 위해 속성을 읽기 전용으로 설정할 수 있었습니다. 하지만 필요한 값을 모두 수용하는 생성자가 필요했으며, 이는 종종 생성자 보일러플레이트 코드를 초래할 수 있습니다. init을 사용하면 긴 생성자 없이 객체 초기자를 사용하여 동일한 목표를 달성할 수 있습니다.

public class Person
{
    public string FirstName { get; init; }
    public string LastName { get; init; }
    // Without using constructor boilerplate for property initialization
}

var person = new Person
{
    FirstName = "John",
    LastName = "Doe"
};

Init-Only 속성을 사용한 객체 초기화

init을 사용하면 객체 초기자와 원활하게 작동합니다. 값을 설정하기 위해 생성자에 의존하는 대신, 객체를 생성하는 동안 필요한 속성을 직접 정의할 수 있습니다.

public class Point
{
    public int X { get; init; }
    public int Y { get; init; }
}

var point = new Point { X = 10, Y = 20 };

// point.X = 30;  // This will throw a compile-time error

이는 Point 유형의 간단하고 불변 객체를 생성합니다. 초기화 시 XY의 값이 설정되며 나중에 수정할 수 없습니다.

생성자와 init 혼합 사용하기

init의 주요 사용 사례는 객체 이니셜라이저를 통한 객체 초기화이지만, 필요하다면 여전히 생성자를 사용할 수 있습니다. 이는 객체 생성 시 특정 속성 값을 강제할 때 특히 유용합니다.

public class Person
{
    public string FirstName { get; init; }
    public string LastName { get; init; }

    public Person(string firstName, string lastName)
    {
        FirstName = firstName;
        LastName = lastName;
    }
}

생성자와 init 속성을 함께 사용할 수 있습니다. 이 접근법은 개체 구축 후 불변성을 유지하면서도 더 큰 유연성을 제공합니다.

Init이 Private Set보다 가지는 이점

이전에는 개발자들이 클래스 외부에서 속성 수정 제한을 위해 private set 접근자를 사용했습니다.

public class Person
{
    public string FirstName { get; private set; }
    public string LastName { get; private set; }

    public Person(string firstName, string lastName)
    {
        FirstName = firstName;
        LastName = lastName;
    }
}

이 접근법은 작동하지만 속성을 초기화하기 위한 생성자 반복 코드가 필요합니다. 또한 클래스 자체가 나중에 속성을 수정할 수 있으며, 이는 불변 객체에 대해 항상 이상적인 것은 아닙니다. init 키워드는 객체 생성 시 초기화만 허용하고 이후 수정은 차단하므로 이 문제를 해결합니다.

읽기 전용 필드 및 Init 접근자로 초기화 처리

init 키워드는 객체 생성 중 필드나 속성을 초기화한 후 여전히 불변으로 유지할 수 있습니다. 읽기 전용 필드는 불변성을 제공하는 반면, init 접근자는 속성에 대해 유사한 기능을 제공합니다. 다음은 두 가지 방법으로 불변성을 처리하는 방법입니다: 읽기 전용 필드와 init 속성을 사용하여.

생성자와 함께 읽기 전용 필드 사용

이 예제에서는 개체 생성 시 설정되는 firstNamelastName에 대해 읽기 전용 필드를 사용합니다. 이 필드는 생성자에서 단 한 번 할당될 수 있으며 이후 수정할 수 없습니다:

public class Person
{
    private readonly string firstName;
    private readonly string lastName;

    public string FirstName => firstName;
    public string LastName => lastName;

    public Person(string firstName, string lastName)
    {
        this.firstName = firstName;
        this.lastName = lastName;
    }
}

초기화를 위한 Init 접근자 사용

또는 Init 접근자를 사용하여 객체 생성 중 초기화할 수 있지만 이후 변경할 수 없는 읽기 전용 속성을 만들 수 있습니다. 이는 읽기 전용 필드의 필요성을 없애주며 더 현대적인 문법을 제공합니다:

public class Person
{
    public string FirstName { get; init; }
    public string LastName { get; init; }
}

IronPDF 소개

C# Init 키워드 (개발자를 위한 동작 방식): 그림 2 - IronPDF: C# PDF 라이브러리

IronPDF 는 C# 개발자를 위해 설계된 강력한 PDF 생성 및 조작 라이브러리입니다. HTML을 PDF로 변환하여 PDF 문서로 변환하므로 작업을 단순화합니다. 픽셀 완벽한 렌더링, 크로스 플랫폼 지원 및 .NET 프로젝트에 쉽게 통합할 수 있는 기능을 제공하는 IronPDF는 고품질의 PDF를 빠르게 생성해야 하는 개발자에게 이상적입니다. 이는 .NET Core, Framework 및 Standard에서 사용할 수 있으며 Windows, Linux, macOS를 포함한 다양한 플랫폼을 지원합니다.

사례: C# Init 키워드와 함께 IronPDF 사용하기

C# 프로젝트에서 PDF를 생성하면서 불변 객체를 만들기 위해 init 키워드와 IronPDF를 결합할 수 있습니다. init 키워드는 객체가 초기화된 후 무결성을 보장하며 IronPDF는 데이터를 처리하고 이 불변 모델을 기반으로 PDF를 생성합니다.

프로젝트에서 IronPDF가 올바르게 참조되어 있는지 확인하십시오. NuGet을 통해 설치할 수 있습니다:

PM > Install-Package IronPdf

다음은 코드 예제입니다:

using IronPdf;

public class Person
{
    public int Id { get; init; }
    public string FirstName { get; init; }
    public string LastName { get; init; }
}

public class PDFGenerator
{
    public static void CreatePersonPDF(Person person)
    {
        var htmlContent = $@"
        <html>
        <body>
            <h1>Person Information</h1>
            <p>ID: {person.Id}</p>
            <p>First Name: {person.FirstName}</p>
            <p>Last Name: {person.LastName}</p>
        </body>
        </html>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs($"Person_{person.Id}.pdf");
    }
}

class Program
{
    static void Main(string[] args)
    {
        var person = new Person
        {
            Id = 1,
            FirstName = "Iron",
            LastName = "Dev"
        };

        PDFGenerator.CreatePersonPDF(person);
    }
}

결론

요약하자면, C# init 키워드는 객체 초기화 시 유연성을 제공하면서 불변 객체를 생성할 수 있게 합니다. 이는 생성자 반복 코드의 필요성을 줄이면서 private set 접근자보다 더 깔끔하고 안전한 대안입니다. init 키워드와 읽기 전용 필드, 구조체, 검증 로직을 결합하여 가독성이나 유연성을 희생하지 않으면서 불변성을 유지할 견고하고 안전한 데이터 구조를 구축하는 데 도움이 됩니다. IronPDF는 무료 체험을 제공하며, 라이선스는 $999부터 시작합니다. 이는 PDF를 편집, 압축 및 보안하는 등의 모든 기능에 대한 액세스를 제공합니다.

제이콥 멜러, 팀 아이언 최고기술책임자
최고기술책임자

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

...
더 읽어보기

관련 기사

Key in blue circle

무료 30일 체험 키를 즉시 받으세요.

Your trial license will be sent to your email address

제한 없음. 100% 무제한 이용. 신용카드 불필요.

bullet_checked신용카드나 계정 생성은 필요하지 않습니다.제한 없음. 100% 무제한 이용. 신용카드 불필요.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
무료 라이브 데모를 예약하세요
Booking Badge

전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.

Iron Software의 고객 로고
부담 없는 무료 상담을 받아보세요
아래 양식을 작성하시거나 sales@ironsoftware.com으로 이메일을 보내주세요.
고객님의 정보는 항상 비밀로 유지됩니다.
전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.
Iron Software의 고객 로고
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.