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
- Bases des tuples de valeurs
- Éléments nommés des tuples
- Déconstruction
- Tuples comme valeurs de retour de méthodes