Retornar vários valores de uma função em C#

Muhammad Maisam Abbas 16 fevereiro 2024
  1. Retorne vários valores de uma função com as arrays em C#
  2. Retornar vários valores de uma função com os objetos de estrutura / classe em C#
  3. Retorne vários valores de uma função com a classe Tuple<T1, T2> em C#
  4. Retornar vários valores de uma função com a notação (T1,T2) em C#
Retornar vários valores de uma função em C#

Este tutorial irá apresentar os métodos para retornar vários valores de uma função em C#.

Retorne vários valores de uma função com as arrays em C#

A estrutura de dados do array armazena vários valores do mesmo tipo de dados em C#. Podemos usar arrays para retornar vários valores de uma função. O exemplo de código a seguir nos mostra como usar arrays para retornar vários valores de uma função em C#.

using System;

namespace return_multipe_values {
  class Program {
    public static int[] compare(int a, int b) {
      int[] arr = new int[2];
      if (a > b) {
        arr[0] = b;
        arr[1] = a;
      } else {
        arr[0] = a;
        arr[1] = b;
      }
      return arr;
    }
    static void Main(string[] args) {
      int[] returnvalue = Program.compare(10, 12);
      Console.WriteLine("Smaller Value = {0}", returnvalue[0]);
      Console.WriteLine("Larger Value = {0}", returnvalue[1]);
    }
  }
}

Resultado:

Smaller Value = 10 Larger Value = 12

Retornamos 2 valores inteiros da função compare() com o tipo de retorno de array em C#. Este método é útil se você precisar retornar vários valores do mesmo tipo de dados. Se você deseja retornar vários valores de diferentes tipos de dados, não pode usar un array porque un array armazena apenas valores do mesmo tipo de dados.

Retornar vários valores de uma função com os objetos de estrutura / classe em C#

As Estruturas e Classes são usadas para agrupar valores relacionados. Os valores não precisam ser do mesmo tipo de dados. Portanto, podemos usar uma estrutura ou um objeto de classe para retornar vários valores de uma função em C#. O exemplo de código a seguir nos mostra como podemos usar um objeto de estrutura para retornar vários valores de uma função em C#.

using System;

namespace return_multipe_values {
  struct Values {
    public int x;
    public int y;
  }

  class Program {
    public static Values comparevalues(int a, int b) {
      Values V = new Values();
      if (a > b) {
        V.x = b;
        V.y = a;
      } else {
        V.x = a;
        V.y = b;
      }
      return V;
    }
    static void Main(string[] args) {
      Values returnedvalues = Program.comparevalues(10, 12);
      Console.WriteLine("Smaller Value = {0}", returnedvalues.x);
      Console.WriteLine("Larger Value = {0}", returnedvalues.y);
    }
  }
}

Resultado:

Smaller Value = 10 Larger Value = 12

Primeiro definimos uma estrutura, Values, contendo os valores que queremos retornar de nossa função. Em seguida, retornamos vários valores da função comparevalues() com a estrutura Values como tipo de retorno em C#. Os valores retornados também devem ser armazenados em uma instância da mesma estrutura.

Esse objetivo também pode ser alcançado usando uma classe como um tipo de retorno da função. O código a seguir nos mostra como podemos usar uma classe para retornar vários valores de uma função em C#.

using System;
public class Sample {
  int x;
  int y;
  public void setxy(int v, int u) {
    x = v;
    y = u;
  }
  public void getxy() {
    Console.WriteLine("The smaller value = {0}", x);
    Console.WriteLine("The greater value = {0}", y);
  }
}
public class Program {
  public static Sample compare(int a, int b) {
    Sample s = new Sample();
    if (a > b) {
      s.setxy(b, a);
    } else {
      s.setxy(a, b);
    }
    return s;
  }
  public static void Main() {
    Sample returnedobj = Program.compare(10, 12);
    returnedobj.getxy();
  }
}

Resultado:

The smaller value = 10 The greater value = 12

Primeiro definimos uma classe Sample contendo os valores que queremos retornar de nossa função. Em seguida, retornamos vários valores da função compare() com a classe Sample como o tipo de retorno da função em C#. Os valores retornados também devem ser armazenados em uma instância da mesma classe. Embora ambos os métodos sejam ótimos para retornar vários valores de diferentes tipos de dados de uma função, escrever uma classe ou estrutura inteira apenas para retornar vários valores de uma função é muito tedioso e demorado.

Retorne vários valores de uma função com a classe Tuple<T1, T2> em C#

Uma tupla é uma estrutura de dados com um número específico e uma ordem específica de valores em C#. Uma tupla pode ter vários valores de diferentes tipos de dados. A classe Tuple<T1,T2> pode ser usada para definir tuplas personalizadas com tipos de dados definidos pelo usuário em uma sequência específica. O exemplo de código a seguir nos mostra como podemos retornar vários valores de uma função com a classe Tuple<T1,T2> em C#.

using System;

public class Program {
  public static Tuple<string, string, int> ReturnMultipleValues() {
    var result = Tuple.Create<string, string, int>("value1", "value2", 3);
    return result;
  }
  public static void Main() {
    var returnedvalues = ReturnMultipleValues();
    Console.WriteLine(returnedvalues);
  }
}

Resultado:

(value1, value2, 3)

Retornamos vários valores da função ReturnMultipleValues() especificando o tipo de retorno da função com Tuple<string, string, int>. Isso significa que a função ReturnMultipleValues() retornará 3 valores com os dois primeiros valores do tipo de dados string e o último valor do tipo de dados int. Este valor de retorno pode ser salvo em uma tupla de estrutura semelhante ou em uma variável do tipo var.

Retornar vários valores de uma função com a notação (T1,T2) em C#

A seção acima que discute como usar a classe Tuple<T1,T2> para simplificar o processo de retornar vários valores de uma função pode ser ainda mais abreviada com a notação (T1, T2) de declarar tuplas. A notação (T1, T2) faz a mesma coisa que a classe Tuple<T1,T2> também encurtando o código. O exemplo de codificação a seguir nos mostra como podemos usar a notação (T1, T2) para retornar vários valores de uma função em C#.

using System;

public class Program {
  public static (string, string, int) ReturnMultipleValues() {
    return ("value1", "value2", 3);
    ;
  }
  public static void Main() {
    (string val1, string val2, int val3) = ReturnMultipleValues();
    Console.WriteLine("{0} {1} {2}", val1, val2, val3);
  }
}

Resultado:

value1 value2 3

No código acima, retornamos vários valores da função ReturnMultipleValues() com a notação (T1,T2) em C#.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artigo relacionado - Csharp Function