csharp-que-son-tuplas

Qué son y cómo usar las tuplas en C#

  • 5 min

En C#, las tuplas son estructuras de datos ligeras que permiten agrupar múltiples valores de diferentes tipos en una sola unidad.

A diferencia de las clases o structs, las tuplas son más sencillas y están diseñadas para simplificar el manejo de múltiples valores (nos evitan tener que definir tipos adicionales).

En C# las tuplas son inmutables. Eso significa que una vez creadas, sus valores no pueden ser cambiados.

Si quieres aprender más consulta el Curso de Introducción a la Programación

Sintaxis de las tuplas

Las tuplas se pueden declarar utilizando el operador () de la siguiente forma.

var tupla = (valor1, valor2);
Copied!
  • valor1, valor2 son los valores que integran la tupla.

Es posible crear una tupla con cualquier número de valores. En el ejemplo anterior he puesto dos, pero podrían ser tres, cuatro, o los que queráis.

var tupla = (valor1, valor2, valor3, ...);
Copied!

Aunque tampoco conviene crear una tupla larguísima, no es su propósito.

Ejemplo básico

Lo vemos más fácil con un ejemplo. Así crearíamos una tupla en C#,

var miTupla = (1, "Hola", 3.14);
Copied!

En este caso hemos creado una tupla con contiene un int, un string y un double.

También podríamos declarar la tupla explícitamente, con la que especificamos los tipos de la tupla.

(int, string, double) miTupla = (1, "Hola", 3.14);
Copied!

Finalmente, podemos crear la tupla a partir de la clase Tuple<...>.

Tuple<int, string, bool> tupla = new Tuple<int, string, bool>(1, "Hola", true);
Copied!

Pero francamente, no entiendo porque alguien querría hacer esto, teniendo la sintaxis anterior 😆.

Uso básico

Acceso a los elementos de la tupla

Podemos acceder a los elementos de una tupla se acceden utilizando las propiedades Item1, Item2, etc.

var tupla = (1, "Hola", true);

Console.WriteLine(tupla.Item1); // 1
Console.WriteLine(tupla.Item2); // Hola
Console.WriteLine(tupla.Item3); // True
Copied!

Tuplas con nombre

También es posible asignar nombres a los elementos de una tupla. Esto se conoce como tuplas nombradas. En general, son más cómodas que las tuplas “sin nombre”.

var tupla = (numero: 1, texto: "Hola", booleano: true);

Console.WriteLine(tupla.numero); // 1
Console.WriteLine(tupla.texto); // Hola
Console.WriteLine(tupla.booleano); // True
Copied!

Destructuración de tuplas

También podemos utilizar la sintaxis de desestructuración en tuplas, para descomponerla en sus valores originales.

var tupla = (1, "Hola", 3.14);

var (entero, cadena, numero) = tupla;

// si prefieres especificar los tipos
(int numero, string texto, bool booleano) = tupla;
Copied!

En este caso, estamos asignando los elementos de la tupla tupla a variables individuales utilizando la sintaxis de desestructuración con los nombres asignados.

Ejemplos prácticos