Renvoyer plusieurs valeurs à partir d'une fonction en C#

Muhammad Maisam Abbas 16 février 2024
  1. Renvoyer plusieurs valeurs d’une fonction avec les tableaux en C#
  2. Renvoyer plusieurs valeurs d’une fonction avec les objets de structure / classe en C#
  3. Renvoyer plusieurs valeurs d’une fonction avec la classe Tuples<T1,T2> en C#
  4. Renvoyer plusieurs valeurs d’une fonction avec la notation (T1,T2) en C#
Renvoyer plusieurs valeurs à partir d'une fonction en C#

Ce didacticiel présentera les méthodes pour renvoyer plusieurs valeurs à partir d’une fonction en C#.

Renvoyer plusieurs valeurs d’une fonction avec les tableaux en C#

La structure de données du tableau stocke plusieurs valeurs du même type de données en C#. Nous pouvons utiliser des tableaux pour renvoyer plusieurs valeurs à partir d’une fonction. L’exemple de code suivant nous montre comment utiliser des tableaux pour renvoyer plusieurs valeurs à partir d’une fonction 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]);
    }
  }
}

Production:

Smaller Value = 10 Larger Value = 12

Nous avons renvoyé 2 valeurs entières de la fonction compare() avec le type de retour tableau en C#. Cette méthode est utile si vous devez renvoyer plusieurs valeurs du même type de données. Si vous souhaitez renvoyer plusieurs valeurs de types de données différents, vous ne pouvez pas utiliser de tableau car un tableau stocke uniquement les valeurs du même type de données.

Renvoyer plusieurs valeurs d’une fonction avec les objets de structure / classe en C#

Les Structures et Classes sont utilisées pour regrouper les valeurs associées. Les valeurs ne doivent pas nécessairement être du même type de données. Par conséquent, nous pouvons utiliser une structure ou un objet de classe pour renvoyer plusieurs valeurs à partir d’une fonction en C#. L’exemple de code suivant nous montre comment utiliser un objet structure pour renvoyer plusieurs valeurs à partir d’une fonction 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);
    }
  }
}

Production:

Smaller Value = 10 Larger Value = 12

Nous définissons d’abord une structure, Values, contenant les valeurs que nous voulons renvoyer de notre fonction. Nous avons ensuite retourné plusieurs valeurs de la fonction comparevalues() avec la structure Values comme type de retour en C#. Les valeurs renvoyées doivent également être stockées dans une instance de la même structure.

Cet objectif peut également être atteint en utilisant une classe comme type de retour de la fonction. Le code suivant nous montre comment utiliser une classe pour renvoyer plusieurs valeurs à partir d’une fonction 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();
  }
}

Production:

The smaller value = 10 The greater value = 12

Nous définissons d’abord une classe Sample contenant les valeurs que nous voulons renvoyer de notre fonction. Nous avons ensuite retourné plusieurs valeurs de la fonction compare() avec la classe Sample comme type de retour de la fonction en C#. Les valeurs renvoyées doivent également être stockées dans une instance de la même classe. Bien que les deux méthodes soient idéales pour renvoyer plusieurs valeurs de différents types de données à partir d’une fonction, l’écriture d’une classe ou d’une structure entière juste pour renvoyer plusieurs valeurs d’une fonction est très fastidieuse et prend du temps.

Renvoyer plusieurs valeurs d’une fonction avec la classe Tuples<T1,T2> en C#

Un tuple est une structure de données avec un nombre spécifique et un ordre spécifique de valeurs en C#. Un tuple peut avoir plusieurs valeurs de différents types de données. La classe Tuple<T1,T2> peut être utilisée pour définir des tuples personnalisés ayant des types de données définis par l’utilisateur dans une séquence spécifique. L’exemple de code suivant nous montre comment nous pouvons renvoyer plusieurs valeurs à partir d’une fonction avec la classe 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);
  }
}

Production:

(value1, value2, 3)

Nous renvoyons plusieurs valeurs de la fonction ReturnMultipleValues() en spécifiant le type de retour de la fonction avec Tuple<string, string, int>. Cela signifie que la fonction ReturnMultipleValues() renverra 3 valeurs avec les deux premières valeurs de type de données string et la dernière valeur de type de données int. Cette valeur de retour peut être soit enregistrée dans un tuple de structure similaire, soit dans une variable de type var.

Renvoyer plusieurs valeurs d’une fonction avec la notation (T1,T2) en C#

La section ci-dessus expliquant comment utiliser la classe Tuple<T1,T2> pour simplifier le processus de retour de plusieurs valeurs d’une fonction peut être encore raccourcie avec la notation (T1, T2) de déclaration de tuples. La notation (T1, T2) fait la même chose que la classe Tuple<T1,T2> en raccourcissant également le code. L’exemple de codage suivant nous montre comment utiliser la notation (T1, T2) pour renvoyer plusieurs valeurs à partir d’une fonction 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);
  }
}

Production:

value1 value2 3

Dans le code ci-dessus, nous avons renvoyé plusieurs valeurs de la fonction ReturnMultipleValues() avec la notation (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

Article connexe - Csharp Function