Elementos nomeados de tuplas
Dê nomes significativos aos campos das tuplas.
Elementos nomeados de tuplas é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 4 aulas no total.
Dando nomes aos elementos da tupla
Em vez de Item1/Item2, você pode dar nomes aos elementos da tupla para tornar o código mais legível: (int Id, string Name).
using System;
class Program
{
static void Main()
{
(int Id, string Name) user = (1, "Ada");
Console.WriteLine(user.Id + ": " + user.Name);
}
}Nomes no literal
Você pode associar nomes diretamente ao criar a tupla, e o compilador os preservará.
using System;
class Program
{
static void Main()
{
var point = (X: 3, Y: 4);
Console.WriteLine("X=" + point.X + ", Y=" + point.Y);
}
}Por que os nomes melhoram a clareza
Elementos nomeados documentam a intenção. result.Total é muito mais claro do que result.Item2.
using System;
class Program
{
static void Main()
{
var result = (Count: 3, Total: 150);
Console.WriteLine("Avg: " + ((double)result.Total / result.Count).ToString("0.0"));
}
}Nomes são rótulos opcionais
Os nomes dos elementos de uma tupla são uma conveniência do tempo de compilação. Internamente, os campos ainda são Item1 e Item2; ambos os nomes funcionam.
using System;
class Program
{
static void Main()
{
var p = (Age: 30, City: "Rome");
Console.WriteLine(p.Age + " / " + p.Item1); // same value
Console.WriteLine(p.City + " / " + p.Item2);
}
}Tuplas nomeadas em assinaturas de métodos
Um método pode declarar uma tupla nomeada como seu parâmetro ou tipo de retorno, tornando a API autoexplicativa.
using System;
class Program
{
static (int Sum, int Product) Compute(int a, int b)
{
return (a + b, a * b);
}
static void Main()
{
var r = Compute(3, 4);
Console.WriteLine("Sum=" + r.Sum + ", Product=" + r.Product);
}
}Combinando nomes e posições
Você pode nomear alguns elementos e deixar outros posicionais, embora nomear todos seja mais claro.
using System;
class Program
{
static void Main()
{
var data = (Id: 7, "guest", Active: true);
Console.WriteLine(data.Id + ", " + data.Item2 + ", " + data.Active);
}
}Nomes com membros inferidos
Ao criar uma tupla a partir de variáveis nomeadas, o C# pode inferir automaticamente nomes correspondentes para os elementos.
using System;
class Program
{
static void Main()
{
int width = 10, height = 5;
var size = (width, height); // names inferred from variables
Console.WriteLine("w=" + size.width + ", h=" + size.height);
}
}Atualizando elementos nomeados
Elementos nomeados ainda são campos graváveis, portanto você pode reatribuí-los enquanto o programa é executado.
using System;
class Program
{
static void Main()
{
var game = (Player: "A", Score: 0);
game.Score += 25;
Console.WriteLine(game.Player + " scored " + game.Score);
}
}Tuplas nomeadas em listas
Listas de tuplas nomeadas são quase tão fáceis de ler quanto linhas de uma tabela.
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var people = new List<(string Name, int Age)>
{
("Ann", 30),
("Bob", 25)
};
foreach (var p in people)
Console.WriteLine(p.Name + " is " + p.Age);
}
}Igualdade com nomes
Os nomes não afetam a igualdade. Duas tuplas são iguais quando seus valores correspondem, independentemente dos nomes dos elementos.
using System;
class Program
{
static void Main()
{
var a = (X: 1, Y: 2);
var b = (A: 1, B: 2);
Console.WriteLine(a == b); // True - values match
}
}Reunindo tudo
Tuplas nomeadas combinam a leveza das tuplas com a legibilidade de campos nomeados, sendo perfeitas para retornos claros de métodos.
using System;
class Program
{
static (bool Ok, string Message) Validate(int age)
{
if (age < 0) return (false, "Age cannot be negative");
return (true, "Valid");
}
static void Main()
{
var v = Validate(-1);
Console.WriteLine(v.Ok + ": " + v.Message);
}
}Verificação rápida
Teste sua compreensão sobre elementos de tuplas nomeadas.
Recapitulação
Elementos de tuplas nomeadas, como (int Id, string Name), tornam as tuplas autoexplicativas; você os acessa pelo nome em vez de Item1. Os nomes podem ser declarados, inferidos a partir de variáveis e usados em assinaturas de métodos. Eles são rótulos do tempo de compilação e não afetam a igualdade, que compara os valores.
using System;
class Program
{
static void Main()
{
var user = (Id: 42, Name: "Kai");
Console.WriteLine(user.Name + " #" + user.Id);
}
}Perguntas Frequentes
A aula “Elementos nomeados de tuplas” é grátis?
Sim — o texto completo de “Elementos nomeados de tuplas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 4 aulas no total.
O que vou aprender em “Elementos nomeados de tuplas”?
Dê nomes significativos aos campos das tuplas. Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C# Academy?
Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Elementos nomeados de tuplas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C# Academy?
Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Fundamentos das tuplas de valor
- Elementos nomeados de tuplas
- Desconstrução
- Tuplas como valores de retorno de métodos