IRONSOFTWAREHOME
MISES À JOUR POUR LES DÉVELOPPEURS

Mot-clé C# Init (Comment ça fonctionne pour les développeurs)

Jacob Mellor, Directeur technique @ Team Iron
Jacob Mellor
Updated: 21 avril 2026

Le mot-clé init de C# 9.0 a introduit une nouvelle façon de définir les propriétés de classe pour créer des objets immuables. Dans les versions antérieures de C#, les propriétés étaient généralement utilisées avec des accesseurs get et set pour lire et écrire dans les champs d'un objet. Cependant, avec init, vous pouvez rendre les propriétés modifiables uniquement pendant l'initialisation de l'objet, les rendant ensuite en lecture seule.

Ce tutoriel explorera l'utilisation du mot-clé init de C# avec des exemples pratiques et des scénarios utilisant la bibliothèque IronPDF. Vous apprendrez également les différences essentielles entre les accesseurs de propriété traditionnels (set) et les nouveaux accesseurs init-only.

Exemple de base du mot-clé Init

Commençons par un exemple de base :

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.

Mot-clé C# Init (Comment ça fonctionne pour les développeurs) : Figure 1 - IDE déclenchant une erreur en raison de propriétés marquées comme init-only

Dans cet exemple, FirstName et LastName sont marquées comme des propriétés init-only. Cela signifie qu'ils ne peuvent être assignés que pendant l'initialisation de l'objet. Après la création de l'objet, tenter de changer les valeurs entraînera une erreur à la compilation.

Pourquoi utiliser le mot-clé Init ?

La raison principale de l'utilisation du mot-clé init est de rendre les propriétés d'un objet immuables après l'initialisation. Traditionnellement, vous pouviez marquer les propriétés comme en lecture seule pour atteindre l'immutabilité. Cependant, vous auriez souvent besoin d'un constructeur qui accepte toutes les valeurs nécessaires pour définir les champs, ce qui peut entraîner du code redondant pour le constructeur. Avec init, vous pouvez atteindre le même objectif en utilisant des initialiseurs d'objet sans écrire de longs constructeurs.

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

Initialisation d'objet avec des propriétés Init-Only

L'utilisation d'init fonctionne parfaitement avec les initialiseurs d'objet. Au lieu de s'appuyer sur des constructeurs pour définir des valeurs, vous pouvez définir les propriétés dont vous avez besoin directement lors de la création d'un objet.

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

Cela crée un objet simple et immuable de type Point. Remarquez que les valeurs pour X et Y sont fixées lors de l'initialisation et ne peuvent pas être modifiées par la suite.

Mélanger init avec des constructeurs

Bien que le cas d'utilisation principal pour init soit l'initialisation d'objet via des initialiseurs d'objet, vous pouvez toujours utiliser un constructeur si nécessaire. C'est particulièrement utile lorsque vous appliquez des valeurs de propriété spécifiques lors de la création d'un objet.

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

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

Vous pouvez utiliser à la fois des constructeurs et des propriétés init conjointement. Cette approche offre plus de flexibilité tout en appliquant l'immutabilité après la construction de l'objet.

Avantages d'Init sur Private Set

Auparavant, les développeurs utilisaient un accesseur private set pour limiter la modification des propriétés en dehors de la 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;
    }
}

Bien que cette approche fonctionne, elle nécessite du code redondant pour le constructeur pour initialiser les propriétés. De plus, elle permet à la classe elle-même de modifier les propriétés plus tard, ce qui n'est pas toujours idéal pour les objets immuables. Le mot-clé init supprime ce problème, car il permet uniquement l'initialisation lors de la création de l'objet et bloque toute modification par la suite.

Gestion de l'initialisation avec des champs en lecture seule et des accesseurs Init

Le mot-clé init peut initialiser des champs ou des propriétés lors de la création de l'objet tout en restant immuables par la suite. Bien que les champs en lecture seule offrent l'immutabilité, l'accesseur init offre une capacité similaire pour les propriétés. Voici comment vous pouvez gérer l'immutabilité de deux manières : en utilisant des champs en lecture seule et des propriétés init.

Utiliser des champs en lecture seule avec un constructeur

Dans cet exemple, nous utilisons des champs en lecture seule pour firstName et lastName, qui sont fixés lors de la construction de l'objet. Ces champs ne peuvent être assignés qu'une fois dans le constructeur et ne peuvent pas être modifiés par la suite :

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

Utiliser des accesseurs Init pour l'initialisation

Alternativement, nous pouvons utiliser l'accesseur init pour créer des propriétés en lecture seule qui peuvent être initialisées lors de la création de l'objet mais ne peuvent pas être modifiées par la suite. Cela élimine le besoin de champs en lecture seule et fournit une syntaxe plus moderne :

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

Introduction à IronPDF

Mot-clé C# Init (Comment ça fonctionne pour les développeurs) : Figure 2 - IronPDF : La bibliothèque PDF pour C#

IronPDF est une puissante bibliothèque de génération et de manipulation de PDF conçue pour les développeurs C#. Elle simplifie le travail avec les PDFs en convertissant HTML, CSS, images, et d'autres contenus en documents PDF. Avec des fonctionnalités telles que le rendu pixel-parfait, le support multiplateforme, et une intégration facile dans les projets .NET, IronPDF est idéal pour les développeurs ayant besoin de créer rapidement des PDFs de haute qualité. Vous pouvez l'utiliser avec .NET Core, Framework, et Standard, et il prend en charge une large gamme de plateformes, y compris Windows, Linux, et macOS.

Cas : Utilisation de IronPDF avec le mot-clé C# Init

Pour créer des objets immuables dans un projet C# tout en générant des PDFs, vous pouvez combiner le mot-clé init avec IronPDF. Le mot-clé init assure l'intégrité de l'objet après son initialisation, tandis qu'IronPDF traite les données et génère des PDFs basés sur ce modèle immuable.

Assurez-vous qu'IronPDF est correctement référencé dans votre projet. Vous pouvez l'installer via NuGet :

PM > Install-Package IronPdf

Voici l'exemple de code :

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

Conclusion

En résumé, le mot-clé init de C# vous permet de créer des objets immuables tout en offrant de la flexibilité lors de l'initialisation de l'objet. C'est une alternative plus propre et plus sûre aux accesseurs private set, réduisant le besoin de code redondant pour le constructeur. Combiner le mot-clé init avec des champs en lecture seule, des structures, et une logique de validation vous aide à construire des structures de données robustes et sûres qui préservent l'immutabilité sans sacrifier la lisibilité ou la flexibilité. IronPDF propose un essai gratuit, et les licences commencent à partir de $999. Cela vous donne accès à toutes ses fonctionnalités, y compris l'édition, la compression et la sécurisation de PDFs.

Jacob Mellor, Directeur technique @ Team Iron
Directeur technique

Jacob Mellor est directeur de la technologie chez Iron Software et un ingénieur visionnaire pionnier de la technologie C# PDF. En tant que développeur à l'origine de la base de code centrale d'Iron Software, il a façonné l'architecture des produits de l'entreprise depuis sa création, la transformant aux côtés du PDG Cameron Rimington en une entreprise de plus de 50 personnes au service de la NASA, de Tesla et d'agences gouvernementales mondiales.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise