IRONSOFTWAREHOME
ACTUALIZACIONES PARA DESARROLLADORES

Palabra Clave Init de C# (Cómo Funciona para Desarrolladores)

Jacob Mellor, Director de Tecnología @ Team Iron
Jacob Mellor
Updated: 21 de abril de 2026

La palabra clave init en C# 9.0 introdujo una nueva forma de definir propiedades de clase para crear objetos inmutables. En versiones anteriores de C#, las propiedades se usaban generalmente con los accesores get y set para leer y escribir en los campos de los objetos. Sin embargo, con init, puedes hacer que las propiedades sean editables solo durante la inicialización del objeto, haciéndolas de solo lectura después.

Este tutorial explorará el uso de la palabra clave init de C# con ejemplos prácticos y escenarios usando la biblioteca IronPDF. También aprenderás sobre las diferencias críticas entre los setters de propiedades tradicionales (set) y los nuevos setters solo de init.

Ejemplo básico de la palabra clave Init

Comencemos con un ejemplo 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.

Palabra clave Init de C# (Cómo funciona para desarrolladores): Figura 1 - IDE mostrando un error debido a propiedades marcadas como solo de inicialización

En este ejemplo, FirstName y LastName están marcadas como propiedades de solo inicialización. Esto significa que solo pueden asignarse durante la inicialización del objeto. Después de que se crea el objeto, intentar cambiar los valores causará un error en tiempo de compilación.

¿Por qué usar la palabra clave Init?

La razón principal para usar la palabra clave init es hacer que las propiedades de un objeto sean inmutables después de la inicialización. Tradicionalmente, podrías marcar las propiedades como de solo lectura para lograr inmutabilidad. Sin embargo, a menudo necesitarías un constructor que acepte todos los valores necesarios para establecer los campos, lo que puede llevar a código redundante en el constructor. Con init, puedes lograr el mismo objetivo utilizando inicializadores de objetos sin escribir constructores largos.

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

Inicialización de objetos con propiedades Init-Only

El uso de init funciona perfectamente con los inicializadores de objetos. En lugar de depender de constructores para establecer valores, puedes definir directamente las propiedades que necesitas mientras creas un 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

Esto crea un objeto simple e inmutable del tipo Point. Observe que los valores para X y Y se establecen en la inicialización y no pueden modificarse posteriormente.

Mezclar init con constructores

Aunque el caso de uso principal de init es la inicialización de objetos a través de inicializadores de objetos, todavía puedes usar un constructor si es necesario. Esto es particularmente útil cuando se imponen valores de propiedades específicas durante la creación del objeto.

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

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

Puedes usar tanto constructores como propiedades init juntas. Este enfoque ofrece más flexibilidad mientras sigue imponiendo inmutabilidad después de la construcción del objeto.

Beneficios de Init sobre Private Set

Anteriormente, los desarrolladores usaban un accesor private set para limitar la modificación de la propiedad fuera de la clase.

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

Aunque este enfoque funciona, requiere código redundante de constructor para inicializar propiedades. Además, permite que la clase misma modifique las propiedades más tarde, lo cual no siempre es ideal para objetos inmutables. La palabra clave init elimina este problema, ya que solo permite la inicialización en el momento de la creación del objeto y bloquea cualquier modificación después.

Manejo de la inicialización con campos de sólo lectura y accesores Init

La palabra clave init puede inicializar campos o propiedades durante la creación del objeto mientras permanecen inmutables después. Mientras los campos de solo lectura proporcionan inmutabilidad, el accesor init ofrece una capacidad similar para las propiedades. He aquí cómo puedes manejar la inmutabilidad de dos maneras: usando campos de solo lectura y propiedades init.

Uso de campos de sólo lectura con un constructor

En este ejemplo, utilizamos campos de solo lectura para firstName y lastName, que se establecen durante la construcción del objeto. Estos campos solo pueden asignarse una vez en el constructor y no pueden modificarse después:

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

Uso de accesores Init para inicialización

Alternativamente, podemos usar el accesor init para crear propiedades de solo lectura que pueden inicializarse durante la creación del objeto pero no pueden cambiarse después. Esto elimina la necesidad de campos de solo lectura y proporciona una sintaxis más moderna:

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

Introducción a IronPDF

Palabra clave Init de C# (Cómo funciona para desarrolladores): Figura 2 - IronPDF: La biblioteca PDF para C#

IronPDF es una poderosa biblioteca de generación y manipulación de PDF diseñada para desarrolladores de C#. Simplifica el trabajo con PDFs convirtiendo HTML, CSS, imágenes y otros contenidos en documentos PDF. Con características como renderizado perfecto al píxel, soporte multiplataforma e integración fácil en proyectos .NET, IronPDF es ideal para desarrolladores que necesitan crear PDFs de alta calidad rápidamente. Puedes usarlo con .NET Core, Framework y Standard, y soporta una amplia gama de plataformas, incluyendo Windows, Linux y macOS.

Caso: Uso de IronPDF con la palabra clave Init de C#

Para crear objetos inmutables en un proyecto de C# mientras se generan PDFs, puedes combinar la palabra clave init con IronPDF. La palabra clave init asegura la integridad del objeto después de ser inicializado, mientras que IronPDF procesa los datos y genera PDFs basándose en ese modelo inmutable.

Asegúrate de que IronPDF esté correctamente referenciado en tu proyecto. Puedes instalarlo a través de NuGet:

PM > Install-Package IronPdf

Aquí está el ejemplo 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);
    }
}

Conclusión

En resumen, la palabra clave init de C# te permite crear objetos inmutables mientras ofrece flexibilidad durante la inicialización del objeto. Es una alternativa más limpia y segura a los accesores private set, reduciendo la necesidad de código redundante en el constructor. Combinar la palabra clave init con campos de solo lectura, estructuras y lógica de validación te ayuda a construir estructuras de datos robustas y seguras que preservan la inmutabilidad sin sacrificar la legibilidad o flexibilidad. IronPDF ofrece una prueba gratuita, y las licencias comienzan desde $999. Esto te da acceso a todas sus funciones, incluyendo edición, compresión, y aseguramiento de PDFs.

Jacob Mellor, Director de Tecnología @ Team Iron
Director de Tecnología

Jacob Mellor es Director de Tecnología de Iron Software y un ingeniero visionario pionero en la tecnología C# PDF. Como desarrollador original de la base de código principal de Iron Software, ha dado forma a la arquitectura de productos de la empresa desde su creación, transformándola, junto con el director ejecutivo Cameron Rimington, en una empresa de más de 50 personas que presta servicios a la NASA, Tesla y organismos gubernamentales de todo el mundo.

...
Leer más

Artículos Relacionados

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

OR
bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta
Biblioteca C# NuGet para PDF
Instalar con NuGet

Versión: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. En el Explorador de Soluciones, haga clic derecho en Referencias, Administrar Paquetes NuGet
  2. Seleccione Examinar y busque "IronPDF"
  3. Seleccione el paquete e instale
C# PDF DLL
Descargar DLL

Versión: 2026.9

o descargue el Instalador de Windows aquí.

  1. Descargue y descomprima IronPDF en una ubicación como ~/Libs dentro del directorio de su solución
  2. En el Explorador de Soluciones de Visual Studio, haga clic derecho en Referencias. Seleccione Examinar, "IronPDF.dll"

Licencias desde $999