0Pricing
C# Academy · Leçon

Initialiseurs d’objets et de collections

Définissez les propriétés de manière concise lors de la création.

Initialiseurs d’objets et de collections est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 4 leçons au total.

Qu’est-ce qu’un initialiseur d’objet ?

Un initialiseur d’objet définit les propriétés ou les champs publics juste après new, à l’intérieur de { }, sans devoir écrire un constructeur pour chaque combinaison.

using System;

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        var p = new Person { Name = "Ada", Age = 36 };
        Console.WriteLine(p.Name + ", " + p.Age);
    }
}

Syntaxe des initialiseurs

Répertoriez les affectations de propriétés, séparées par des virgules, entre les accolades. Elles s’exécutent une fois le constructeur terminé.

using System;

class Car
{
    public string Make { get; set; }
    public string Model { get; set; }
    public int Year { get; set; }
}

class Program
{
    static void Main()
    {
        var car = new Car
        {
            Make = "Toyota",
            Model = "Corolla",
            Year = 2022
        };
        Console.WriteLine(car.Year + " " + car.Make + " " + car.Model);
    }
}

Combiner constructeur et initialiseur

Vous pouvez appeler un constructeur ET utiliser un initialiseur. Le constructeur s’exécute en premier, puis l’initialiseur affecte les propriétés indiquées.

using System;

class Widget
{
    public string Id { get; }
    public string Label { get; set; }

    public Widget(string id) { Id = id; }
}

class Program
{
    static void Main()
    {
        var w = new Widget("w1") { Label = "Submit" };
        Console.WriteLine(w.Id + ": " + w.Label);
    }
}

Initialiser seulement certaines propriétés

Indiquez uniquement les propriétés qui vous intéressent ; les autres conservent leurs valeurs par défaut. Les initialiseurs gagnent ainsi en souplesse.

using System;

class Settings
{
    public bool DarkMode { get; set; } = false;
    public int Volume { get; set; } = 50;
    public string Lang { get; set; } = "en";
}

class Program
{
    static void Main()
    {
        var s = new Settings { DarkMode = true };
        Console.WriteLine(s.DarkMode + ", " + s.Volume + ", " + s.Lang);
    }
}

Initialiseurs de collections

Un initialiseur de collection remplit une liste, un ensemble ou un tableau lors de sa création, à l’aide de { } et d’éléments séparés par des virgules.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var nums = new List<int> { 1, 2, 3, 4, 5 };
        Console.WriteLine("Count: " + nums.Count);
        Console.WriteLine("Sum: " + Sum(nums));
    }

    static int Sum(List<int> list)
    {
        int t = 0;
        foreach (var n in list) t += n;
        return t;
    }
}

Fonctionnement des initialiseurs de collections

Le compilateur transforme chaque élément en appel à Add(...). Tout type possédant une méthode Add et prenant en charge IEnumerable accepte cette syntaxe.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var names = new List<string> { "Ann", "Bob", "Cara" };
        foreach (var n in names)
            Console.WriteLine(n);
    }
}

Initialiseurs de dictionnaires

Les dictionnaires peuvent être initialisés avec des paires clé-valeur entre accolades, ce qui est très pratique pour les tables de correspondance.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var ages = new Dictionary<string, int>
        {
            ["Ann"] = 30,
            ["Bob"] = 25
        };
        Console.WriteLine("Ann is " + ages["Ann"]);
    }
}

Initialiseurs d’objets imbriqués

Un initialiseur d’objet peut initialiser des objets imbriqués et construire un petit graphe d’objets en une seule expression.

using System;

class Address
{
    public string City { get; set; }
}

class Customer
{
    public string Name { get; set; }
    public Address Home { get; set; } = new Address();
}

class Program
{
    static void Main()
    {
        var c = new Customer
        {
            Name = "Lin",
            Home = new Address { City = "Tokyo" }
        };
        Console.WriteLine(c.Name + " in " + c.Home.City);
    }
}

Collections d’objets

Combinez les deux fonctionnalités : initialisez une liste dont les éléments sont eux-mêmes construits avec des initialiseurs d’objets.

using System;
using System.Collections.Generic;

class Item
{
    public string Name { get; set; }
    public decimal Price { get; set; }
}

class Program
{
    static void Main()
    {
        var cart = new List<Item>
        {
            new Item { Name = "Pen", Price = 1.5m },
            new Item { Name = "Book", Price = 9.0m }
        };
        decimal total = 0;
        foreach (var i in cart) total += i.Price;
        Console.WriteLine("Total: " + total);
    }
}

Initialiseurs et propriétés init

Les initialiseurs d’objets permettent de définir les propriétés limitées à init, puisqu’elles ne peuvent être affectées que pendant l’initialisation.

using System;

class Config
{
    public string Env { get; init; }
    public int Retries { get; init; }
}

class Program
{
    static void Main()
    {
        var c = new Config { Env = "prod", Retries = 3 };
        Console.WriteLine(c.Env + " / " + c.Retries);
    }
}

Mise en pratique

Les initialiseurs rendent la construction déclarative et lisible, notamment pour les objets de configuration et les données de test.

using System;
using System.Collections.Generic;

class Team
{
    public string Name { get; set; }
    public List<string> Members { get; set; } = new List<string>();
}

class Program
{
    static void Main()
    {
        var t = new Team
        {
            Name = "Alpha",
            Members = { "Ann", "Bob", "Cara" }
        };
        Console.WriteLine(t.Name + " has " + t.Members.Count + " members");
    }
}

Vérification rapide

Testez votre compréhension des initialiseurs.

Récapitulatif

Les initialiseurs d’objets définissent les membres publics dans { } après new, une fois le constructeur exécuté. Les initialiseurs de collections ajoutent des éléments au moyen d’appels implicites à Add, et les dictionnaires prennent en charge les paires clé-valeur. Les deux types peuvent être imbriqués, fonctionner avec les propriétés init et rendre la construction concise et déclarative.

using System;
using System.Collections.Generic;

class Demo
{
    public string Name { get; set; }
    public List<int> Nums { get; set; } = new List<int>();
}

class Program
{
    static void Main()
    {
        var d = new Demo { Name = "x", Nums = { 1, 2, 3 } };
        Console.WriteLine(d.Name + " " + d.Nums.Count);
    }
}

Questions Fréquemment Posées

La leçon « Initialiseurs d’objets et de collections » est-elle gratuite ?

Oui — le texte complet de « Initialiseurs d’objets et de collections » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Initialiseurs d’objets et de collections » ?

Définissez les propriétés de manière concise lors de la création. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C# Academy ?

Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Initialiseurs d’objets et de collections » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?

Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Définir des constructeurs
  2. Chaînage de constructeurs avec this
  3. Initialiseurs d’objets et de collections
  4. Constructeurs statiques
← Retour à C# Academy