Decomposizione
Scomponga le tuple in variabili separate.
Decomposizione è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 4 lezioni in totale.
Che cos'è la decomposizione?
La decomposizione suddivide una tupla o un oggetto in variabili separate con un'unica istruzione, così può assegnare direttamente un nome a ogni parte.
using System;
class Program
{
static void Main()
{
var point = (3, 4);
(int x, int y) = point;
Console.WriteLine("x=" + x + ", y=" + y);
}
}Decomporre una tupla
Inserisca le variabili di destinazione tra parentesi a sinistra di =. Ognuna riceve l'elemento corrispondente della tupla.
using System;
class Program
{
static void Main()
{
var user = ("Ada", 36);
(string name, int age) = user;
Console.WriteLine(name + " is " + age);
}
}Usare var nella decomposizione
Può lasciare che il compilatore deduca i tipi con var, per ogni variabile oppure per l'intero gruppo.
using System;
class Program
{
static void Main()
{
var data = (1, "one", true);
var (id, word, flag) = data;
Console.WriteLine(id + " " + word + " " + flag);
}
}Decomporre il risultato di un metodo
Può decomporre direttamente la tupla restituita da un metodo in variabili con nome.
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);
}
}Ignorare alcuni valori
Usi un trattino basso _ per ignorare le parti che non Le servono durante la decomposizione.
using System;
class Program
{
static (int, int, int) Rgb() => (255, 128, 0);
static void Main()
{
var (r, _, _) = Rgb();
Console.WriteLine("Red channel: " + r);
}
}Decomporre in variabili esistenti
Può assegnare valori a variabili già dichiarate omettendo i nomi dei tipi.
using System;
class Program
{
static void Main()
{
int a = 0, b = 0;
(a, b) = (10, 20);
Console.WriteLine(a + ", " + b);
}
}Scambiare valori con le tuple
Un trucco pratico: scambi due variabili in una sola riga usando la decomposizione di tuple, senza bisogno di una variabile temporanea.
using System;
class Program
{
static void Main()
{
int x = 1, y = 2;
(x, y) = (y, x);
Console.WriteLine("x=" + x + ", y=" + y);
}
}Il metodo Deconstruct
Le Sue classi possono supportare la decomposizione definendo un metodo Deconstruct con parametri 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);
}
}Più overload di Deconstruct
Una classe può offrire diversi overload di Deconstruct che espongono numeri diversi di valori.
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);
}
}Decomposizione in foreach
Quando percorre una raccolta di tuple, può decomporre ogni elemento direttamente nell'intestazione di 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);
}
}In sintesi
La decomposizione rende più leggibile il codice che restituisce o memorizza più valori, assegnando un nome a ogni parte nel punto in cui viene usata.
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);
}
}Verifica rapida
Verifichi la Sua comprensione della decomposizione.
Riepilogo
La decomposizione suddivide una tupla o un oggetto in variabili con nome con un'unica istruzione. Usi var (a, b) = ..., ignori alcune parti con _, scambi le variabili e decomponi gli elementi in foreach. Le classi personalizzate possono supportarla definendo un metodo Deconstruct con parametri out, anche tramite overload.
using System;
class Program
{
static void Main()
{
var (a, b, c) = (1, 2, 3);
Console.WriteLine(a + b + c);
}
}Domande Frequenti
La lezione «Decomposizione» è gratuita?
Sì — il testo completo di «Decomposizione» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 4 lezioni in totale.
Cosa imparerò in «Decomposizione»?
Scomponga le tuple in variabili separate. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C# Academy?
Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Decomposizione»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C# Academy?
Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Nozioni di base sulle tuple di valori
- Elementi denominati delle tuple
- Decomposizione
- Tuple come valori restituiti dai metodi