0Pricing
C# Academy · Lezione

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

  1. Nozioni di base sulle tuple di valori
  2. Elementi denominati delle tuple
  3. Decomposizione
  4. Tuple come valori restituiti dai metodi
← Torna a C# Academy