C# – Passage de paramètres

Ceci est un exemple illustrant le passage de paramètres à des méthodes en C#. Vous pourrez comparer par vous-mêmes avec des programmes équivalents dans les langages que vous connaissez.

Un espace nommé peut contenir plusieurs classes (ici, on voit les classes Program et Démonstrateur). Comme en Java ou en C++, un constructeur est une méthode sans type portant le nom de la classe dont il construit des instances.

La classe Démonstrateur à droite offre deux services, soit une méthode de classe échanger() et une méthode d'instance FabriqueTableau().

La méthode échanger() reçoit (et permute) deux entiers passés par référence, un peu comme une version limitée de std::swap() en C++.

La fonction FabriqueTableau() illustre un paramètre out, donc un pur sortant : la fonction a le devoir d'écrire dans ce paramètre au cours de son exécution.

Le programme principal montre une instanciation (avec new) de Démonstrateur, selon la même syntaxe que celle connue en Java, de même que des appels aux deux méthodes susmentionnées.

Notez qu'une référence nulle s'écrit null, et que les qualifications out et ref doivent être répétées par le code client (contrairement à C++, par exemple, où un paramètre par référence est exprimé dans la signature d'une fonction, pas dans le code client). Cette dernière contrainte (irritante, il faut l'avouer) pourrait être levée dans une version ultérieure du langage.

Notez que le tableau tab est un objet et connaît son nombre d'éléments, exprimé par une propriété (sorte d'attribut intelligent, exprimant les formes banales d'accesseurs – get – et de mutateurs – set) nommée Length.

using System;

namespace ExempleParamètres
{
   class Démonstrateur
   {
      private int Capacité { get; set; } // propriété privée automatique
      public Démonstrateur(int capacité)
      {
         Capacité = capacité;
      }
      public static void échanger(ref int a, ref int b)
      {
         int temp = a;
         a = b;
         b = temp;
      }
      public void FabriqueTableau(out int[] tab)
      {
         tab = new int[Capacité];
      }
   }
   class Program
   {
      static void Main(string[] args)
      {
         int m = 3,
             n = 5;
         Console.WriteLine("Avant: m = {0}, n = {1}", m, n);
         Démonstrateur.échanger(ref m, ref n);
         Console.WriteLine("Après: m = {0}, n = {1}", m, n);
         int[] tab = null;
         Démonstrateur démo = new Démonstrateur(10);
         démo.FabriqueTableau(out tab);
         Console.WriteLine("Le tableau créé a une capacité de {0} éléments", tab.Length); // propriété
      }
   }
}

Valid XHTML 1.0 Transitional

CSS Valide !