C # - Passage de paramètres par sortie

Une instruction return peut être utilisée pour renvoyer une seule valeur à partir d'une fonction. Cependant, en utilisantoutput parameters, vous pouvez renvoyer deux valeurs à partir d'une fonction. Les paramètres de sortie sont similaires aux paramètres de référence, sauf qu'ils transfèrent les données hors de la méthode plutôt que dedans.

L'exemple suivant illustre cela -

using System;

namespace CalculatorApplication {
   class NumberManipulator {
      public void getValue(out int x ) {
         int temp = 5;
         x = temp;
      }
      static void Main(string[] args) {
         NumberManipulator n = new NumberManipulator();
         
         /* local variable definition */
         int a = 100;
         
         Console.WriteLine("Before method call, value of a : {0}", a);
         
         /* calling a function to get the value */
         n.getValue(out a);

         Console.WriteLine("After method call, value of a : {0}", a);
         Console.ReadLine();
      }
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Before method call, value of a : 100
After method call, value of a : 5

Il n'est pas nécessaire d'attribuer une valeur à la variable fournie pour le paramètre de sortie. Les paramètres de sortie sont particulièrement utiles lorsque vous devez renvoyer des valeurs d'une méthode via les paramètres sans attribuer une valeur initiale au paramètre. Passez par l'exemple suivant, pour comprendre cela -

using System;

namespace CalculatorApplication {
   class NumberManipulator {
      public void getValues(out int x, out int y ) {
          Console.WriteLine("Enter the first value: ");
          x = Convert.ToInt32(Console.ReadLine());
          
          Console.WriteLine("Enter the second value: ");
          y = Convert.ToInt32(Console.ReadLine());
      }
      static void Main(string[] args) {
         NumberManipulator n = new NumberManipulator();
         
         /* local variable definition */
         int a , b;
         
         /* calling a function to get the values */
         n.getValues(out a, out b);
         
         Console.WriteLine("After method call, value of a : {0}", a);
         Console.WriteLine("After method call, value of b : {0}", b);
         Console.ReadLine();
      }
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Enter the first value:
7
Enter the second value:
8
After method call, value of a : 7
After method call, value of b : 8