Tuplas C#

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 personcom 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.fieldLinguagem de código:  C#  ( cs )

Como os campos da persontupla 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: 22Linguagem 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 persontupla 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:20Linguagem 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: 600Linguagem de código:  C#  ( cs )

Neste exemplo, o método Calculateretorna uma tupla nomeada com dois elementos: sume product. Ao chamar o método, podemos atribuir a tupla retornada a uma variável resulte 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: 600Linguagem 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; // ERRORLinguagem 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:TrueLinguagem de código:  C#  ( cs )

System.ValueTuple vs.

Até agora, você aprendeu as tuplas que pertencem ao System.ValueTupletipo. Eles são completamente diferentes das tuplas apoiadas pelos System.Tupletipos.

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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *