IRONSOFTWAREHOME
ATUALIZAÇÕES DO DESENVOLVEDOR

Palavra-chave Init em C# (Como funciona para desenvolvedores)

Curtis Chau
Curtis Chau
Updated: 21 de abril de 2026

A palavra-chave init no C# 9.0 introduziu uma nova maneira de definir propriedades de classe para a criação de objetos imutáveis. Em versões anteriores do C#, as propriedades eram normalmente usadas com os métodos de acesso get e set para ler e gravar em campos de objetos. No entanto, com o método init, você pode tornar as propriedades graváveis ​​apenas durante a inicialização do objeto, tornando-as somente leitura posteriormente.

Este tutorial irá explorar o uso da palavra-chave init em C# com exemplos práticos e cenários utilizando a biblioteca IronPDF . Você também aprenderá sobre as diferenças cruciais entre os métodos setters de propriedades tradicionais (set) e os novos métodos setters que só funcionam com inicialização.

Exemplo básico da palavra-chave init

Vamos começar com um exemplo básico:

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.

Palavra-chave C# Init (Como Funciona Para Desenvolvedores): Figura 1 - IDE lançando um erro devido a propriedades marcadas como somente init

Neste exemplo, FirstName e LastName são marcados como propriedades somente init. Isso significa que eles só podem ser atribuídos durante a inicialização do objeto. Após a criação do objeto, qualquer tentativa de alterar seus valores causará um erro de compilação.

Por que usar a palavra-chave init?

O principal motivo para usar a palavra-chave init é tornar as propriedades do objeto imutáveis ​​após a inicialização. Tradicionalmente, você poderia marcar propriedades como somente leitura para obter imutabilidade. No entanto, muitas vezes você precisará de um construtor que aceite todos os valores necessários para definir os campos, o que pode levar a um código repetitivo no construtor. Com o init, você pode atingir o mesmo objetivo usando inicializadores de objetos sem escrever construtores longos.

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"
};

Inicialização de objetos com propriedades somente de inicialização

O uso do init funciona perfeitamente com inicializadores de objetos. Em vez de depender de construtores para definir valores, você pode definir as propriedades necessárias diretamente ao criar um objeto.

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

Isso cria um objeto simples e imutável do tipo Point. Note que os valores de X e Y são definidos na inicialização e não podem ser modificados depois.

Misturando inicialização com construtores

Embora o principal caso de uso para init seja a inicialização de objetos por meio de inicializadores de objetos, você ainda pode usar um construtor, se necessário. Isso é particularmente útil ao impor valores de propriedade específicos durante a criação de objetos.

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

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

Você pode usar tanto construtores quanto propriedades de inicialização em conjunto. Essa abordagem oferece mais flexibilidade, ao mesmo tempo que garante a imutabilidade após a construção do objeto.

Vantagens do conjunto inicial em relação ao conjunto privado

Anteriormente, os desenvolvedores usavam um acessador de conjunto privado para limitar a modificação de propriedades fora da classe.

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;
    }
}

Embora essa abordagem funcione, ela exige código repetitivo no construtor para inicializar as propriedades. Além disso, permite que a própria classe modifique as propriedades posteriormente, o que nem sempre é ideal para objetos imutáveis. A palavra-chave init resolve esse problema, pois permite a inicialização apenas no momento da criação do objeto e bloqueia qualquer modificação posterior.

Lidando com a inicialização de campos somente leitura e acessadores de inicialização.

A palavra-chave init pode inicializar campos ou propriedades durante a criação de um objeto, mantendo-os imutáveis ​​posteriormente. Embora os campos somente leitura ofereçam imutabilidade, o acessador init oferece uma capacidade semelhante para propriedades. Eis como você pode lidar com a imutabilidade de duas maneiras: usando campos somente leitura e propriedades de inicialização.

Utilizando campos somente leitura com um construtor

Neste exemplo, usamos campos somente leitura para firstName e lastName, que são definidos durante a construção do objeto. Esses campos só podem ser atribuídos uma vez no construtor e não podem ser modificados posteriormente:

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;
    }
}

Utilizando acessadores de inicialização para inicialização

Alternativamente, podemos usar o acessador init para criar propriedades somente leitura que podem ser inicializadas durante a criação do objeto, mas não podem ser alteradas posteriormente. Isso elimina a necessidade de campos somente leitura e fornece uma sintaxe mais moderna:

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

Introdução ao IronPDF

Palavra-chave C# Init (Como Funciona Para Desenvolvedores): Figura 2 - IronPDF: A Biblioteca PDF C#

IronPDF é uma poderosa biblioteca para geração e manipulação de PDFs, projetada para desenvolvedores C#. Simplifica o trabalho com PDFs, convertendo HTML , CSS, imagens e outros conteúdos em documentos PDF. Com recursos como renderização perfeita em pixels, suporte multiplataforma e fácil integração em projetos .NET , o IronPDF é ideal para desenvolvedores que precisam criar PDFs de alta qualidade rapidamente. Você pode usá-lo com .NET Core, Framework e Standard, e ele oferece suporte a uma ampla gama de plataformas, incluindo Windows, Linux e macOS.

Case: Usando IronPDF com a Palavra-chave Init do C#

Para criar objetos imutáveis ​​em um projeto C# durante a geração de PDFs, você pode combinar a palavra-chave init com o IronPDF. A palavra-chave init garante a integridade do objeto após sua inicialização, enquanto o IronPDF processa os dados e gera PDFs com base nesse modelo imutável.

Certifique-se de que o IronPDF esteja referenciado corretamente em seu projeto. Você pode instalá-lo via NuGet:

PM > Install-Package IronPdf

Aqui está um exemplo de código:

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);
    }
}

Conclusão

Palavra-chave C# Init (Como Funciona Para Desenvolvedores): Figura 3 - Página de Licenciamento do IronPDF

Em resumo, a palavra-chave init do C# permite criar objetos imutáveis, oferecendo flexibilidade durante a inicialização do objeto. É uma alternativa mais limpa e segura aos acessadores de conjuntos privados, reduzindo a necessidade de código repetitivo no construtor. A combinação da palavra-chave init com campos somente leitura, structs e lógica de validação ajuda a construir estruturas de dados robustas e seguras que preservam a imutabilidade sem sacrificar a legibilidade ou a flexibilidade. IronPDF oferece um teste gratuito, e licenças começam a partir de $999. Isso lhe dá acesso a todos os seus recursos, incluindo edição, compressão e proteção de PDFs.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.