Usando Tuples em C#–retornando vários parâmetros de um método

Olá pessoal,

Uma das coisas interessantes da linguagem C# é a quantidade de opções que temos para resolver o problemas do nosso dia a dia. Um caso interessante e bem comum é termos a necessidade de passar vários parâmetros para um método e às vezes também retornar vários parâmetros, e é bem provável que você se utilize de artifícios como parâmetros de saída (out) ou referência (ref).

Mas existe algo bem mais interessante, que são as tuplas (Tuples). Na prática uma tuple é um array de vários tipos de dados, que podem ser passados ou retornados por um método.

Vamos ao exemplo:

1. Crie um projeto Console no Visual Studio (no meu caso estou usando o 2010, mas você pode usar o 2008 também):

2. Vamos criar um método que retorne vários parâmetros e mostrar o use de Tuple:

   1: class Program

   2: {

   3:    static void Main(string[] args)

   4:    {

   5:       var retorno = RetornaVariosParametros();

   6:  

   7:       Console.WriteLine("Valor inteiro: {0}",retorno.Item1);

   8:       Console.WriteLine("Valor String: {0}", retorno.Item2);

   9:       Console.WriteLine("Valor Double: {0}", retorno.Item3);

  10:    }

  11:  

  12:    public static Tuple<int,string,double> RetornaVariosParametros()

  13:    {

  14:       return Tuple.Create(10, "Tuple", 100.50);

  15:    }

  16: }


Veja como é simples: você usa uma Tuple<> identificando os tipos de dados que ela conterá e depois acessa cada valor através dos Items.

O exemplo é bem simples, mas demonstra a facilidade e a versatilidade das tuplas.

Mais referências sobre Tuple em http://msdn.microsoft.com/en-us/library/system.tuple.aspx

Um abraço e até a próxima.

Carlos.

3 Comments

  1. Muito bom para quando não se quer criar um tipo somente para encapsular determinados valores, onde tal criação não iria agregar valor ao modelo.

  2. Congratulations, your article was reprinted to Harvard University, visit http://harvard-us.edu.ms

  3. I want to thanks for the efforts you have created in putting this on ink article. i am hoping identical best work from you in the future yet. in truth your creative writing skill has galvanized me to induce my very own blog now. really the blogging is spreading its wings quickly. Your write up could be a fine model of it.

Leave a Reply

Anti-spam: complete the taskWordPress CAPTCHA


This blog is kept spam free by WP-SpamFree.