0Pricing
C# Academy · Leçon

Déconstruction

Décomposez des tuples en variables distinctes.

Déconstruction 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 que la déconstruction ?

La déconstruction sépare un tuple (ou un objet) en plusieurs variables dans une seule instruction, afin que vous puissiez nommer directement chaque partie.

using System;

class Program
{
    static void Main()
    {
        var point = (3, 4);
        (int x, int y) = point;
        Console.WriteLine("x=" + x + ", y=" + y);
    }
}

Déconstruire un tuple

Placez les variables cibles entre parenthèses à gauche de =. Chacune reçoit l'élément correspondant du tuple.

using System;

class Program
{
    static void Main()
    {
        var user = ("Ada", 36);
        (string name, int age) = user;
        Console.WriteLine(name + " is " + age);
    }
}

Utiliser var lors d'une déconstruction

Vous pouvez laisser le compilateur déduire les types avec var, soit pour chaque variable, soit pour l'ensemble du groupe.

using System;

class Program
{
    static void Main()
    {
        var data = (1, "one", true);
        var (id, word, flag) = data;
        Console.WriteLine(id + " " + word + " " + flag);
    }
}

Déconstruire le résultat d'une méthode

Vous pouvez déconstruire directement le tuple renvoyé par une méthode dans des variables nommées.

using System;

class Program
{
    static (int, int) MinMax(int a, int b) => a < b ? (a, b) : (b, a);

    static void Main()
    {
        var (lo, hi) = MinMax(8, 3);
        Console.WriteLine("min=" + lo + ", max=" + hi);
    }
}

Ignorer des valeurs

Utilisez un trait de soulignement _ pour ignorer les parties dont vous n'avez pas besoin lors de la déconstruction.

using System;

class Program
{
    static (int, int, int) Rgb() => (255, 128, 0);

    static void Main()
    {
        var (r, _, _) = Rgb();
        Console.WriteLine("Red channel: " + r);
    }
}

Déconstruire dans des variables existantes

Vous pouvez affecter des variables déjà déclarées en omettant les noms de types.

using System;

class Program
{
    static void Main()
    {
        int a = 0, b = 0;
        (a, b) = (10, 20);
        Console.WriteLine(a + ", " + b);
    }
}

Échanger des variables avec des tuples

Astuce pratique : échangez deux variables sur une seule ligne grâce à la déconstruction d'un tuple, sans avoir besoin d'une variable temporaire.

using System;

class Program
{
    static void Main()
    {
        int x = 1, y = 2;
        (x, y) = (y, x);
        Console.WriteLine("x=" + x + ", y=" + y);
    }
}

La méthode Deconstruct

Vos propres classes peuvent prendre en charge la déconstruction en définissant une méthode Deconstruct avec des paramètres out.

using System;

class Point
{
    public int X, Y;
    public Point(int x, int y) { X = x; Y = y; }

    public void Deconstruct(out int x, out int y)
    {
        x = X;
        y = Y;
    }
}

class Program
{
    static void Main()
    {
        var p = new Point(5, 9);
        var (px, py) = p;
        Console.WriteLine(px + ", " + py);
    }
}

Plusieurs surcharges de Deconstruct

Une classe peut proposer plusieurs surcharges de Deconstruct exposant différents nombres de valeurs.

using System;

class Person
{
    public string Name; public int Age; public string City;
    public Person(string n, int a, string c) { Name = n; Age = a; City = c; }

    public void Deconstruct(out string name, out int age)
    {
        name = Name; age = Age;
    }
}

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

Déconstruction dans une boucle

Lorsque vous parcourez une collection de tuples, vous pouvez déconstruire chaque élément directement dans l'en-tête de foreach.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pairs = new List<(string, int)>
        {
            ("Ann", 30),
            ("Bob", 25)
        };
        foreach (var (name, age) in pairs)
            Console.WriteLine(name + " is " + age);
    }
}

Mise en pratique

La déconstruction rend lisible le code qui renvoie ou stocke plusieurs valeurs, en nommant chaque partie au moment où elle est utilisée.

using System;

class Program
{
    static (int Quotient, int Remainder) Divide(int a, int b) => (a / b, a % b);

    static void Main()
    {
        var (q, r) = Divide(17, 5);
        Console.WriteLine("17 / 5 = " + q + " remainder " + r);
    }
}

Vérification rapide

Vérifiez votre compréhension de la déconstruction.

Récapitulatif

La déconstruction sépare un tuple ou un objet en variables nommées dans une seule instruction. Utilisez var (a, b) = ..., ignorez certaines parties avec _, échangez des variables et déconstruisez dans foreach. Les classes personnalisées activent cette fonctionnalité avec une méthode Deconstruct utilisant des paramètres out, éventuellement surchargée.

using System;

class Program
{
    static void Main()
    {
        var (a, b, c) = (1, 2, 3);
        Console.WriteLine(a + b + c);
    }
}

Questions Fréquemment Posées

La leçon « Déconstruction » est-elle gratuite ?

Oui — le texte complet de « Déconstruction » 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 « Déconstruction » ?

Décomposez des tuples en variables distinctes. 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 « Déconstruction » ?

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. Bases des tuples de valeurs
  2. Éléments nommés des tuples
  3. Déconstruction
  4. Tuples comme valeurs de retour de méthodes
← Retour à C# Academy