Resumo : neste tutorial, você aprenderá como usar tuplas C# para representar um conjunto de valores como uma única unidade.
Introdução às tuplas C#
Uma tupla permite representar um conjunto de valores como uma única unidade. O tipo de tuplas é System.ValueTuple
.
Criando tuplas e acessando elementos
O seguinte mostra como criar um novo tipo de tupla:
using static System.Console;
var person = ("John Doe", 22);
WriteLine(person);
Linguagem de código: C# ( cs )
Saída:
(John Doe, 22)
Linguagem de código: C# ( cs )
Neste exemplo, definimos uma tupla nomeada person
com dois campos. O primeiro campo é uma string que representa o nome da pessoa e o segundo campo é um número inteiro que representa a idade da pessoa.
Para acessar um campo, você usa a sintaxe de ponto:
tuple.field
Linguagem de código: C# ( cs )
Como os campos da person
tupla não têm nomes, o C# atribui nomes de campo padrão a eles como Item1
, Item2
, etc.
using static System.Console;
var person = ("John Doe", 22);
WriteLine($"Name: {person.Item1}, Age: {person.Item2}");
Linguagem de código: C# ( cs )
Saída:
Name: John Doe, Age: 22
Linguagem de código: C# ( cs )
Para atribuir nomes aos campos da tupla, você pode usar a seguinte sintaxe:
using static System.Console;
var person = (Name: "John Doe", Age: 22) ;
WriteLine($"Name: {person.Name}, Age: {person.Age}");
Linguagem de código: C# ( cs )
Neste exemplo, atribuímos nomes aos campos da person
tupla e acessamos seus valores através dos nomes dos campos.
Desconstruindo elementos de tupla
Desconstruir uma tupla significa atribuir elementos da tupla a múltiplas variáveis . Para desconstruir elementos de uma tupla, você usa o =
operador. Por exemplo:
using static System.Console;
var point = (10,20);
var (x,y) = point; // deconstructing a tuple
WriteLine($"x:{x}, y:{y}");
Linguagem de código: C# ( cs )
Saída:
x:10, y:20
Linguagem de código: C# ( cs )
Neste exemplo, atribuímos o primeiro e o segundo elementos de uma tupla às variáveis x
e y
.
Você também pode especificar explicitamente os tipos de variáveis ao desconstruir uma tupla:
using static System.Console;
var point = (10,20);
(int x,int y) = point; // deconstructing a tuple
WriteLine($"x:{x}, y:{y}");
Linguagem de código: C# ( cs )
Retornando tuplas
As tuplas são úteis quando você deseja retornar vários valores de um método. Por exemplo:
using static System.Console;
static (int sum, int product) Calculate(int x, int y)
{
return (x + y, x * y);
}
var result = Calculate(20, 30);
WriteLine(result.sum); // output: 50
WriteLine(result.product); // output: 600
Linguagem de código: C# ( cs )
Neste exemplo, o método Calculate
retorna uma tupla nomeada com dois elementos: sum
e product
. Ao chamar o método, podemos atribuir a tupla retornada a uma variável result
e acessar seus elementos usando a notação de ponto.
Observe que você pode desconstruir a tupla retornada pelo método assim:
using static System.Console;
static (int sum, int product) Calculate(int x, int y)
{
return (x + y, x * y);
}
var (sum,product) = Calculate(20, 30);
WriteLine(sum); // output: 50
WriteLine(product); // output: 600
Linguagem de código: C# ( cs )
Comparando Tuplas
Tuplas suportam os operadores ==
e !=
. Duas tuplas são comparáveis quando atendem às seguintes condições:
- Ambas as tuplas têm o mesmo número de elementos.
- Os elementos da tupla correspondentes são comparáveis usando os operadores
==
e .!=
Por exemplo, o exemplo a seguir resultará em erro porque o número de elementos é diferente:
var point2D = (10,20);
var point3D = (10,20,30);
point2D == point3D; // ERROR
Linguagem de código: C# ( cs )
O exemplo a seguir demonstra que duas tuplas são iguais:
using static System.Console;
var point1 = (10,20,30);
var point2 = (10, 20,30);
var result = point1 == point2;
WriteLine($"Result:{result}");
Linguagem de código: C# ( cs )
Saída:
Result:True
Linguagem de código: C# ( cs )
System.ValueTuple vs.
Até agora, você aprendeu as tuplas que pertencem ao System.ValueTuple
tipo. Eles são completamente diferentes das tuplas apoiadas pelos System.Tuple
tipos.
A tabela a seguir ilustra as principais diferenças:
System.ValueTupe | Sistema.Tupla |
---|---|
Tuplas são tipos de valor | Tuplas são tipos de referência |
Tuplas são mutáveis | Tuplas são imutáveis |
Membros de dados são campos | Membros de dados são propriedades |
Resumo
- Use uma tupla para representar um conjunto de valores como uma única variável.
- Use tuplas para tornar seu código mais legível e expressivo.