Devolver varios valores de una función en C#

Muhammad Maisam Abbas 16 febrero 2024
  1. Devolver varios valores de una función con los Arrays en C#
  2. Devolver varios valores de una función con los objetos de estructura / clase en C#
  3. Devolver varios valores de una función con la clase Tuples<T1,T2> en C#
  4. Devolver varios valores de una función con la notación (T1,T2) en C#
Devolver varios valores de una función en C#

Este tutorial presentará los métodos para devolver múltiples valores de una función en C#.

Devolver varios valores de una función con los Arrays en C#

La estructura de datos de array almacena varios valores del mismo tipo de datos en C#. Podemos usar matrices para devolver múltiples valores de una función. El siguiente ejemplo de código nos muestra cómo usar matrices para devolver múltiples valores de una función en 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]);
    }
  }
}

Producción :

Smaller Value = 10
Larger Value = 12

Devolvimos 2 valores enteros de la función compare() con el tipo de retorno de array en C#. Este método es útil si tiene que devolver varios valores del mismo tipo de datos. Si desea devolver varios valores de diferentes tipos de datos, no puede usar un array porque un array almacena valores del mismo tipo de datos solamente.

Devolver varios valores de una función con los objetos de estructura / clase en C#

Las Estructuras y clases se utilizan para agrupar valores relacionados. Los valores no tienen que ser del mismo tipo de datos. Por lo tanto, podemos usar una estructura o un objeto de clase para devolver múltiples valores de una función en C#. El siguiente ejemplo de código nos muestra cómo podemos usar un objeto de estructura para devolver múltiples valores de una función en 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);
    }
  }
}

Producción :

Smaller Value = 10
Larger Value = 12

Primero definimos una estructura, Values, que contiene los valores que queremos devolver de nuestra función. Luego devolvimos múltiples valores de la función comparevalues() con la estructura Values como tipo de retorno en C#. Los valores devueltos también deben almacenarse en una instancia de la misma estructura.

Este objetivo también se puede lograr utilizando una clase como tipo de retorno de la función. El siguiente código nos muestra cómo podemos usar una clase para devolver múltiples valores de una función en 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();
  }
}

Producción :

The smaller value = 10
The greater value = 12

Primero definimos una clase Sample que contiene los valores que queremos devolver de nuestra función. Luego devolvimos múltiples valores de la función compare() con la clase Sample como el tipo de retorno de la función en C#. Los valores devueltos también deben almacenarse en una instancia de la misma clase. Aunque ambos métodos son excelentes para devolver múltiples valores de diferentes tipos de datos desde una función, escribir una clase o estructura completa solo para devolver múltiples valores de una función es muy tedioso y requiere mucho tiempo.

Devolver varios valores de una función con la clase Tuples<T1,T2> en C#

Una tupla es una estructura de datos con un número específico y un orden específico de valores en C#. Una tupla puede tener varios valores de diferentes tipos de datos. La clase Tuple<T1,T2> se puede utilizar para definir tuplas personalizadas que tengan tipos de datos definidos por el usuario en una secuencia específica. El siguiente ejemplo de código nos muestra cómo podemos devolver múltiples valores de una función con la clase Tuple<T1,T2> en 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);
  }
}

Producción :

(value1, value2, 3)

Devolvemos varios valores de la función ReturnMultipleValues() especificando el tipo de retorno de la función con Tuple<string, string, int>. Esto significa que la función ReturnMultipleValues() devolverá 3 valores con los dos primeros valores de tipo de datos string y el último valor de tipo de datos int. Este valor de retorno puede guardarse en una tupla de estructura similar o en una variable de tipo var.

Devolver varios valores de una función con la notación (T1,T2) en C#

La sección anterior que discute cómo usar la clase Tuple<T1,T2> para simplificar el proceso de devolver múltiples valores de una función se puede acortar aún más con la notación (T1, T2) de declarar tuplas. La notación (T1, T2) hace lo mismo que la clase Tuple<T1,T2> al acortar también el código. El siguiente ejemplo de codificación nos muestra cómo podemos usar la notación (T1, T2) para devolver múltiples valores de una función en 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);
  }
}

Producción :

value1 value2 3

En el código anterior, devolvimos varios valores de la función ReturnMultipleValues() con la notación (T1,T2) en 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

Artículo relacionado - Csharp Function