Neste artigo veremos como retornar mais de um item de um método usando C#. |
Em muitas situações retornar apenas um único valor a partir de um método não é suficiente para atender a sua necessidade. Nesses casos você precisa uma forma de retornar mais de um item.
Você pode conseguir isso usando a palavra-chave out que irá atuar como parâmetro de retorno ou pode retonar uma instância do tipo contendo os valores desejados.
Existem duas maneiras de retornar mais de um valores usando parâmetros out.
Podemos também usar a palavra-chave ref para obter mais de um valor no retorno de um método. Lembrando que ref indica um valor que é passado por referência.
Vejamos agora como isso funciona na prática.
recursos usados:
Criando o projeto Console
Crie um projeto do tipo Console App(.NET Framework) com o nome RetornaMultiplosValores.
Para cada um dos exemplos você pode incluir um novo projeto usando a opção File-> Add New Project;
1- Usando a palavra-chave out
No primeiro exemplo vamos usar o parâmetro out para retonar o resto da divisão entre dois números inteiros.
Inclua o código abaixo no arquivo Program.cs :
using
System;
namespace
RetornaMultiploValores
static int GetResultadoDaDivisao(int
dividendo, int divisor, out int resto) |
Executando o projeto teremos o resultado a seguir:
Essa é a abordagem clássica e tradicional para obter mais de um valor a partir de um método: passamos um parâmetro resto usando out.
2- Usando a palavra-chave ref
Neste exemplo vamos retornar dois valores : soma e multiplicacao de um método que calcula a soma e a multiplicação de dois números.
Inclua o código abaixo no arquivo Program.cs:
using System;
namespace Usando_Ref
{
class Program
{
static void Main(string[] args)
{
int a = 10;
int b = 20;
int soma = 0;
int multiplicacao=0;
Calcula(a, b, ref soma, ref multiplicacao);
Console.WriteLine($" 10 + 20 = {soma} e 10 x 20 = {multiplicacao} ");
Console.ReadLine();
}
static void Calcula(int a, int b, ref int soma, ref int multiplicacao)
{
soma = a + b;
multiplicacao = a * b;
}
}
}
|
Executando este código teremos o resultado abaixo:
Neste exemplo obtemos os dois valores calculados no método Calcula passando os parâmetros adicao e multiplicacao usando a palavra-chave ref.
3- Usando uma classe
Em outra abordagem clássica podemos obter mais de um valor de um retorno de método definindo uma classe e retornado um objeto desta classe.
No exemplo criamos a classe Resultado com os campos soma e multiplicacao e no método Calcula, criamos uma instância dessa classe e atribuimos os resultados aos campos da classe.
Como a classe Calcula retorna um tipo Resultado, para obter os valores retornados basta acessar a instância do objeto retornado pela classe Calcula.
Inclua o código abaixo no arquivo Program.cs:
using System;
namespace Usando_Classe
{
class Resultado
{
public int soma;
public int multiplicacao;
}
class Program
{
static void Main(string[] args)
{
int a = 20;
int b = 30;
var resultado = Calcula(a, b);
Console.WriteLine($" 20 + 30 = {resultado.soma} e 20 x 30 = {resultado.multiplicacao} ");
Console.ReadLine();
}
private static Resultado Calcula(int a, int b)
{
var resultado = new Resultado
{
soma = a + b,
multiplicacao = a * b
};
return resultado;
}
}
}
|
Abaixo vemos o resultado da execução do código:
Da mesma forma que usamos uma classe podemos usar uma Struct também. Neste caso basta definir uma Struct Resultado conforme o código a seguir:
struct Resultado { public int soma; public int multiplicacao; } |
O resto do código é exatamente igual ao anterior.
Na próxima parte do artigo veremos como obter mais de um valor de um método usando Tuplas e o novo recurso do C# 7.0.
Pegue o projeto completo aqui : RetornaMultiploValores.zip
Ó
Senhor, Senhor nosso, quão admirável é o teu nome em toda a terra, pois
puseste a tua glória sobre os céus!
Salmos 8:1
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Visual Studio - Dica de produtividade - Quick Launch - Macoratti.net
Visual Studio - Dica de produtividade - Nuget - Macoratti.net
C# - Novidades da versão 7.0 - Macoratti
C# - O tipo Dynamic - Macoratti.net
C# - Apresentando Tuples - Macoratti.net
C# - Novos recursos da versão 7.1 - Macoratti
SQL - Álgebra Relacional - Conceitos básicos - Macoratti.net