Retornando vários valores
Olá pessoal, meu nome é Mauricio Junior e hoje eu vou falar um pouco sobre vários retornos de uma função ou método usando a linguagem C# criada pela Microsoft e com o Visual Studio 2019.
Existe um nome pra isso, especialistas dão o nome de Tupla, mas você pode fazer de várias maneiras um retorno diferenciado; como por exemplo: ao invés de ser um retorno com vários parâmetros, você pode preencher os atributos de uma classe para retornar. Isso depende muito do que deseja e de como coloca o padrão em seus projetos ou empresa. Cada uma pode trabalhar da maneira que melhor achar, só procure se adaptar da melhor maneira possível.
Geralmente eu prefiro preencher a propriedade de uma classe ao invés de criar um método com vários retornos, até porque se algum parâmetro for acrescentado, não dará tanto trabalho para fazer a alteração.
Vou criar um projeto simples em C#, do tipo console com apenas dois métodos, um principal e outro que recebe alguns valores e gera um retorno.
Código
O código 1.1 mostra o método principal chamado Main e dentro dele existe outro método chamado GetValues onde receber um monte de parâmetros. O retorno dele está atribuído a uma variável chamada result e dentro dessa variável existem vários ítens que podem ser pegos como o .item1, .item2 e assim por diante. Esses valores podem ser impressos na tela sem qualquer problema.
Código 1.1 - Método principal
static void Main(string[] args)
{
try
{
var result = GetValues("Mauricio", 36, Convert.ToDateTime("1983-09-29"));
Console.WriteLine(result.Item1);
Console.WriteLine(result.Item2);
Console.WriteLine(result.Item3);
Console.Read();
}
catch (Exception ex)
{
Console.Write(ex.StackTrace.ToString());
Console.Read();
}
}
O código 1.2 já mostra o método chamado GetValues que recebe os parâmetros vistos anteriormente e retorna string, int, DateTime, DayOfWeek e int. O método é simples mas você precisa prestar atenção no retorno que está entre parênteses. Então a regra principal aqui é que o retorno tem que necessariamente estar entre parênteses. Note que o retorno também precisa estar entre parênteses.
Código 1.2 - Método com vários retornos
static (string, int, DateTime, DayOfWeek, int) GetValues(string name, int age, DateTime birstday)
{
var diaDaSemana = birstday.DayOfWeek;
var diaDoAno = birstday.DayOfYear;
return (name, age, birstday, diaDaSemana, diaDoAno);
}
Vamos alterar um pouco o método principal, ou seja, o código 1.1. Isso porque podem existir variáveis que você não precisa receber todos e alguns você precisa descartar. Para isso, existe o underline que serve para descartar os valores que não serão utilizados, veja o código 1.3.
Código 1.3 - Descarte de valores
static void Main(string[] args)
{
try
{
(_, _, _, _, _) = GetValues("Mauricio", 37, Convert.ToDateTime("1983-09-29"));
Console.Read();
}
catch (Exception ex)
{
Console.Write(ex.StackTrace.ToString());
Console.Read();
}
}
Veja que antes da chamada do método, existe um parênteses com um monte de underline e vírgulas. Isso quer dizer que todos os valores de retorno do método serão descartos. No caso de querer pegar apenas um valor específico, basta atribuir um nome de variável, por exemplo: eu quero pegar apenas o dia da semana que eu nasci.
Para pegar o dia da semana que eu nasci, é necessário olhar qual é a posição do retorno que nesse caso é o quarto parâmetro, colocar um nome e depois buscar o valor. Note que eu tive que colocar um var antes dos valores. Veja o código 1.4.
Código 1.4 - Pegar apenas um valor do retorno
static void Main(string[] args)
{
try
{
var (_, _, _, diaDaSemana, _) = GetValues("Mauricio", 37, Convert.ToDateTime("1983-09-29"));
Console.WriteLine(diaDaSemana);
Console.Read();
}
catch (Exception ex)
{
Console.Write(ex.StackTrace.ToString());
Console.Read();
}
}
O DateTime é uma classe que ao passar uma data e um ano qualquer ele pode te dizer qual é o dia da semana que deu naquele dia específico. Existe também a possibilidade de pegar o dia do ano se você for contar os dias. Ele pode fazer além disso, mas aqui não é o objetivo do artigo falar sobre o DateTime.
O resultado desse método foi esse, na figura 1.1.
Figura 1.1 - Retorno com o dia da semana.
Veja o vídeo abaixo mostrando como fazer todo o exemplo e com mais informações.
Sign up to our newsletter
Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.