0Pricing
C# Academy · Lección

Deconstrucción

Desempaquete tuplas en variables independientes.

Deconstrucción es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 4 lecciones en total.

¿Qué es la deconstrucción?

La deconstrucción divide una tupla (u objeto) en variables independientes mediante una sola instrucción, de modo que puede asignar un nombre directamente a cada parte.

using System;

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

Deconstruir una tupla

Coloque las variables de destino entre paréntesis a la izquierda de =. Cada una recibe el elemento correspondiente de la tupla.

using System;

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

Usar var en la deconstrucción

Puede dejar que el compilador infiera los tipos mediante var, ya sea para cada variable o para todo el grupo.

using System;

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

Deconstruir el resultado de un método

Puede deconstruir directamente la tupla que devuelve un método en variables con nombre.

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);
    }
}

Descartar valores

Utilice un guion bajo _ para ignorar las partes que no necesite durante la deconstrucción.

using System;

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

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

Deconstruir en variables existentes

Puede asignar valores a variables ya declaradas omitiendo los nombres de los tipos.

using System;

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

Intercambiar valores con tuplas

Un truco práctico: intercambie dos variables en una sola línea mediante la deconstrucción de tuplas, sin necesidad de una variable temporal.

using System;

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

El método Deconstruct

Sus propias clases pueden admitir la deconstrucción si definen un método Deconstruct con parámetros 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);
    }
}

Varias sobrecargas de Deconstruct

Una clase puede ofrecer varias sobrecargas de Deconstruct que expongan distintas cantidades de valores.

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);
    }
}

Deconstrucción en foreach

Al recorrer una colección de tuplas, puede deconstruir cada elemento directamente en el encabezado 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);
    }
}

Unir todas las piezas

La deconstrucción hace que el código que devuelve o almacena varios valores se lea con claridad, ya que asigna un nombre a cada parte en el punto de uso.

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);
    }
}

Comprobación rápida

Compruebe su comprensión de la deconstrucción.

Resumen

La deconstrucción divide una tupla u objeto en variables con nombre mediante una sola instrucción. Utilice var (a, b) = ..., descarte partes con _, intercambie variables y deconstruya en foreach. Las clases personalizadas pueden habilitar esta función mediante un método Deconstruct con parámetros out, que también puede sobrecargarse.

using System;

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

Preguntas frecuentes

¿La lección «Deconstrucción» es gratis?

Sí — el texto completo de «Deconstrucción» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Deconstrucción»?

Desempaquete tuplas en variables independientes. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C# Academy?

No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Deconstrucción»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C# Academy?

Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Conceptos básicos de las tuplas de valores
  2. Elementos con nombre en tuplas
  3. Deconstrucción
  4. Tuplas como valores de retorno de métodos
← Volver a C# Academy