Getsuyodev, Programming is mainly used when constructing an application. Programming requires knowledge of application domains, algorithms, and programming language expertise. Programming can be developed in different logic based on developer knowledge.

C Sharp – Paramètres par référence

Programmation en C# (C Sharp)



Les paramètres formels d’une méthode jouent le rôle de variables muettes et servent à décrire le fonctionnement de la méthode.

En C#, le passage par référence des paramètres effectifs est valable pour tous les types.

Syntaxe :

En C# pour indiquer un passage par référence on précède la déclaration du paramètre formel du mot clef ref :

static int methode1( int a , ref char b) {
//.......
return a+b; }

le paramètres a est passé par valeur
le  paramètre b est passé par référence

Sémantique :

Dans un passage par référence, le paramètre formel est traité comme une variable dont l’adresse qui est transmise au moment de chaque appel, est celle du paramètre effectif correspondant. L’adresse de la variable effective autorise toutes les modifications immédiatement sur cette variable quelle que soit sa localisation.

En C#, lors de l’appel d’un paramètre passé par référence, le mot clef ref doit obligatoirement précéder le paramètre effectif qui doit obligatoirement avoir été initialisé auparavant.

Exemple :

//déclaration d'une méthode avec un paramètre transmis par référence :
static int modifier ( int a , ref int b) {
   b *= 10; // la valeur de b est modifiée durablement
return a+b; }

// appel de cette méthode dans le corps d'une autre méthode :
int x=10, y=20, z=0;
z = modifier ( x, ref y);


using System;

class Exercice
{
public static void Main(string[ ] args) // méthode principale de lancement de l'exécution
{
int a, b, c;
a=10;
b=20;
c=0;
Console.WriteLine("( avant appel de somme1( ) ) a = "+a+" , b = "+b+" et  c = "+c);
c=somme1(a,b);
Console.WriteLine("( après appel de somme1( ) ) a = "+a+" , b = "+b+" et  c = "+c);
Console.WriteLine("(----------------------------------------------------------------------");
a=10;
b=20;
c=0;
Console.WriteLine("( avant appel de somme2( ) ) a = "+a+" , b = "+b+" et  c = "+c);
c=somme2(a,ref b);
Console.WriteLine("( après appel de somme2( ) ) a = "+a+" , b = "+b+" et  c = "+c);
Console.ReadLine();
}
public static int somme1( int x , int y) // le paramètre y est  transmis par valeur
{
y = 100 ; // c'est la copie locale du paramètre y qui est modifiée !
return x+y ;
}
public static int somme2( int x , ref int y) // le paramètre y est  transmis par référence
{
y = 100 ; // la variable effective référencée par y est modifiée !
return x+y ;
}

}



Comments are closed, but trackbacks and pingbacks are open.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More