La palabra Tuple significa «una estructura de datos que consta de múltiples partes». Entonces tuple es una estructura de datos que le brinda la forma más fácil de representar un conjunto de datos que tiene múltiples valores que pueden o no estar relacionados entre sí. Se introdujo en .NET Framework 4.0 . En tupla, puede agregar elementos del 1 al 8 . Si intenta agregar elementos mayores de ocho, el compilador arrojará un error. Las tuplas generalmente se usan cuando desea crear una estructura de datos que contiene objetos con sus propiedades y no desea crear un tipo separado para eso.
Características de las tuplas:
- Nos permite representar múltiples datos en un solo conjunto de datos.
- Nos permite crear, manipular y acceder a conjuntos de datos.
- Devuelve múltiples valores de un método sin utilizar ningún parámetro .
- También puede almacenar elementos duplicados.
- Nos permite pasar múltiples valores a un método con la ayuda de parámetros individuales.
¿Cuál es la necesidad de las tuplas de C#?
Antes de las tuplas, tenemos tres formas de devolver más de un valor del método en C#, que son tipos de clase o estructura , parámetros de salida y tipos anónimos que se devuelven a través de un tipo de retorno dinámico . Pero después de las tuplas, se vuelve fácil representar un solo conjunto de datos.
Por otra razón, imagine un caso en el que desea almacenar los detalles de un Empleado en una sola entidad, como Nombre, EmpID, Grupo sanguíneo, Número de contacto. Ahora, la forma más común que viene a la mente es crear una estructura de datos que tome los campos requeridos. Aquí es donde entran en juego las tuplas. Con Tuples, no hay necesidad de crear ninguna estructura de datos separada. En cambio, para este caso, puede usar Tuple<T1, T2, T3, T4> .
Las estructuras de datos más comunes como Array, List, etc. son solo de un tipo específico y pueden almacenar infinitos elementos. Pero las tuplas pueden almacenar un número limitado de elementos, es decir, 8 y pueden ser de cualquier tipo.
Creando una tupla
En C#, hay principalmente 2 formas de crear la tupla que son las siguientes:
- Usando el constructor de la clase Tuple: puede crear una tupla usando el constructor que proporciona la clase Tuple<T> . Donde puede almacenar elementos a partir de uno a ocho con su tipo. Pero no está permitido almacenar elementos mayores de ocho en una tupla. Si intenta hacerlo, el compilador arrojará un error.
Sintaxis:
// Constructor for single elements Tuple <T1>(T1) // Constructor for two elements Tuple <T1, T2>(T1, T2) . . . // Constructor for eight elements Tuple <T1, T2, T3, T4, T5, T6, T7, TRest>(T1, T2, T3, T4, T5, T6, T7, TRest)
Ejemplo:
// C# program to create tuple using tuple constructor.
using
System;
public
class
GFG{
// Main method
static
public
void
Main(){
// Tuple with one element
Tuple<
string
>My_Tuple1 =
new
Tuple<
string
>(
"GeeksforGeeks"
);
// Tuple with three elements
Tuple<
string
,
string
,
int
>My_Tuple2 =
new
Tuple<
string
,
string
,
int
>(
"Romil"
,
"Python"
, 29);
// Tuple with eight elements
Tuple<
int
,
int
,
int
,
int
,
int
,
int
,
int
, Tuple<
int
>>My_Tuple3 =
new
Tuple<
int
,
int
,
int
,
int
,
int
,
int
,
int
, Tuple<
int
>>(1,2,3,4,5,6,7,
new
Tuple<
int
>(8));
}
}
- Uso del método de creación: cuando usamos el constructor de tuplas para crear una tupla, debemos proporcionar el tipo de cada elemento almacenado en la tupla, lo que hace que su código sea engorroso. Entonces, C# proporciona otra clase que es la clase Tuple que contiene los métodos estáticos para crear un objeto tuple sin proporcionar el tipo de cada elemento.
Sintaxis:
// Method for 1-tuple Create(T1) // Method for 2-tuple Create(T1, T2) . . . // Method for 8-tuple Create(T1, T2, T3, T4, T5, T6, T7, T8)
Ejemplo:
// C# program to create tuple
// using Create Method
using
System;
public
class
GFG {
// Main method
static
public
void
Main()
{
// Creating 1-tuple
// Using Create Method
var
My_Tuple1 = Tuple.Create(
"GeeksforGeeks"
);
// Creating 4-tuple
// Using Create Method
var
My_Tuple2 = Tuple.Create(12, 30, 40, 50);
// Creating 8-tuple
// Using Create Method
var
My_Tuple3 = Tuple.Create(13,
"Geeks"
, 67,
89.90,
'g'
, 39939,
"geek"
, 10);
}
}
Accediendo a una Tupla
Puede acceder a los elementos de una tupla usando la propiedad Item<elementNumber> , aquí elementNumber es de 1 a 7 como Item1, Item 2, Item3, Item4, Item5, Item6, Item 7, etc. y el último elemento de 8-tuple es accesible usando la propiedad Rest. Como se muestra en el siguiente ejemplo:
Ejemplo:
// C# program to access the tuple // using Item and Rest property using System; public class GFG { // Main method static public void Main() { // Creating 1-tuple // Using Create Method var My_Tuple1 = Tuple.Create( "GeeksforGeeks" ); // Accessing the element of Tuple // Using Item property Console.WriteLine( "Element of My_Tuple1: " + My_Tuple1.Item1); Console.WriteLine(); // Creating 4-tuple // Using Create Method var My_Tuple2 = Tuple.Create(12, 30, 40, 50); // Accessing the element of Tuple // Using Item property Console.WriteLine( "Element of My_Tuple2: " + My_Tuple2.Item1); Console.WriteLine( "Element of My_Tuple2: " + My_Tuple2.Item2); Console.WriteLine( "Element of My_Tuple2: " + My_Tuple2.Item3); Console.WriteLine( "Element of My_Tuple2: " + My_Tuple2.Item4); Console.WriteLine(); // Creating 8-tuple // Using Create Method var My_Tuple3 = Tuple.Create(13, "Geeks" , 67, 89.90, 'g' , 39939, "geek" , 10); // Accessing the element of Tuple // Using Item property // And print the 8th element of tuple // using Rest property Console.WriteLine( "Element of My_Tuple3: " + My_Tuple3.Item1); Console.WriteLine( "Element of My_Tuple3: " + My_Tuple3.Item2); Console.WriteLine( "Element of My_Tuple3: " + My_Tuple3.Item3); Console.WriteLine( "Element of My_Tuple3: " + My_Tuple3.Item4); Console.WriteLine( "Element of My_Tuple3: " + My_Tuple3.Item5); Console.WriteLine( "Element of My_Tuple3: " + My_Tuple3.Item6); Console.WriteLine( "Element of My_Tuple3: " + My_Tuple3.Item7); Console.WriteLine( "Element of My_Tuple3: " + My_Tuple3.Rest); } } |
Producción:
Element of My_Tuple1: GeeksforGeeks Element of My_Tuple2: 12 Element of My_Tuple2: 30 Element of My_Tuple2: 40 Element of My_Tuple2: 50 Element of My_Tuple3: 13 Element of My_Tuple3: Geeks Element of My_Tuple3: 67 Element of My_Tuple3: 89.9 Element of My_Tuple3: g Element of My_Tuple3: 39939 Element of My_Tuple3: geek Element of My_Tuple3: (10)
Tuplas anidadas
En C#, puede crear una tupla en otra tupla. Puede usar tuplas anidadas cuando desee agregar más de ocho elementos en la misma tupla. Se puede acceder a la tupla anidada usando la propiedad Rest como se muestra en el Ejemplo 1. Puede agregar una tupla anidada en cualquier parte de la secuencia, pero se recomienda que pueda colocar una tupla anidada al final de la secuencia para que puedan agregarse fácilmente. acceso desde la propiedad Resto. Si coloca una tupla anidada que no sea el último lugar, se podrá acceder a la tupla de acuerdo con la propiedad Item<elementNumber> como se muestra en el ejemplo 2.
Ejemplo 1:
// C# program to illustrate nested tuple using System; public class GFG{ // Main method static public void Main () { // Nested Tuple var My_Tuple = Tuple.Create(13, "Geeks", 67, 89.90, 'g', 39939, "geek", Tuple.Create(12, 30, 40, 50)); // Accessing the element of Tuple // Using Item property // And accessing the elements of nested tuple // Using Rest property Console.WriteLine("Element of My_Tuple: "+My_Tuple.Item1); Console.WriteLine("Element of My_Tuple: "+My_Tuple.Item2); Console.WriteLine("Element of My_Tuple: "+My_Tuple.Item3); Console.WriteLine("Element of My_Tuple: "+My_Tuple.Item4); Console.WriteLine("Element of My_Tuple: "+My_Tuple.Item5); Console.WriteLine("Element of My_Tuple: "+My_Tuple.Item6); Console.WriteLine("Element of My_Tuple: "+My_Tuple.Item7); Console.WriteLine("Element of Nested tuple: "+My_Tuple.Rest); Console.WriteLine("Element of Nested tuple: "+My_Tuple.Rest.Item1.Item1); Console.WriteLine("Element of Nested tuple: "+My_Tuple.Rest.Item1.Item2); Console.WriteLine("Element of Nested tuple: "+My_Tuple.Rest.Item1.Item3); Console.WriteLine("Element of Nested tuple: "+My_Tuple.Rest.Item1.Item4); } }
Producción:
Element of My_Tuple: 13 Element of My_Tuple: Geeks Element of My_Tuple: 67 Element of My_Tuple: 89.9 Element of My_Tuple: g Element of My_Tuple: 39939 Element of My_Tuple: geek Element of Nested tuple: ((12, 30, 40, 50)) Element of Nested tuple: 12 Element of Nested tuple: 30 Element of Nested tuple: 40 Element of Nested tuple: 50
Ejemplo 2:
// C# program to illustrate nested tuple using System; public class GFG{ // Main method static public void Main () { // Nested Tuple // Here nested tuple is present // at the place of 2nd element var My_Tuple = Tuple.Create(13, Tuple.Create(12, 30, 40, 50),67, 89.90, 'g', 39939, 123, "geeks"); // Accessing the element of Tuple // Using Item property // And accessing the elements of // nested tuple Using Rest property Console.WriteLine("Element of My_Tuple: "+My_Tuple.Item1); Console.WriteLine("Element of Nested Tuple: "+My_Tuple.Item2.Item1); Console.WriteLine("Element of Nested Tuple: "+My_Tuple.Item2.Item2); Console.WriteLine("Element of Nested Tuple: "+My_Tuple.Item2.Item3); Console.WriteLine("Element of Nested Tuple: "+My_Tuple.Item2.Item4); Console.WriteLine("Element of My_Tuple: "+My_Tuple.Item3); Console.WriteLine("Element of My_Tuple: "+My_Tuple.Item4); Console.WriteLine("Element of My_Tuple: "+My_Tuple.Item5); Console.WriteLine("Element of My_Tuple: "+My_Tuple.Item6); Console.WriteLine("Element of My_Tuple: "+My_Tuple.Item7); Console.WriteLine("Element of My_Tuple: "+My_Tuple.Rest); } }
Producción:
Element of My_Tuple: 13 Element of Nested Tuple: 12 Element of Nested Tuple: 30 Element of Nested Tuple: 40 Element of Nested Tuple: 50 Element of My_Tuple: 67 Element of My_Tuple: 89.9 Element of My_Tuple: g Element of My_Tuple: 39939 Element of My_Tuple: 123 Element of My_Tuple: (geeks)
Tupla como parámetro de método
En C#, puede pasar una tupla como parámetro de método, como se muestra en el siguiente ejemplo. Aquí pasamos una tupla llamada mytuple en el método PrintTheTuple() y se accede a los elementos de la tupla usando la propiedad Item<elementNumber>.
Ejemplo:
// C# program to illustrate the // tuple as a method parameter. using System; public class GFG{ // Main method static public void Main () { // Creating a tuple var mytuple = Tuple.Create("GeeksforGeeks", 123, 90.8); // Pass the tuple in the // PrintTheTuple method PrintTheTuple(mytuple); } static void PrintTheTuple(Tuple<string, int, double>mytuple) { Console.WriteLine("Element: "+mytuple.Item1); Console.WriteLine("Element: "+mytuple.Item2); Console.WriteLine("Element: "+mytuple.Item3); } }
Producción:
Element: GeeksforGeeks Element: 123 Element: 90.8
Tupla como tipo de devolución
En C#, los métodos pueden usar tupla como tipo de devolución. O, en otras palabras, un método puede devolver una tupla como se muestra en el siguiente ejemplo:
Ejemplo:
// C# program to illustrate // how a method return tuple using System; public class GFG{ // Main Method static public void Main () { // Return tuple is stored in mytuple var mytuple = PrintTuple(); Console.WriteLine(mytuple.Item1); Console.WriteLine(mytuple.Item2); Console.WriteLine(mytuple.Item3); } // PrintTuple method return a tuple static Tuple<string, string, string>PrintTuple() { return Tuple.Create("Geeks", "For", "Geeks"); } }
Producción:
Geeks For Geeks
Limitación de tupla:
- Es de tipo referencia no de tipo valor.
- Está limitado a ocho elementos. Significa que no puede almacenar más de ocho elementos sin tupla anidada.
- Solo se accede a estos mediante el uso de la propiedad Item<elementNumber> .
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA