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ésultat

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ésultat est valable pour tous les types.

Syntaxe :

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

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

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

Sémantique :

Dans un passage par résultat, , le paramètre formel est traité comme une variable locale dont la valeur initiale est non définie. A la fin de l’exécution de la méthode la valeur résultante est renvoyée dans la variable effective quelle que soit sa localisation.

En C#, lors de l’appel d’un paramètre passé par résultat,  le mot clef out doit obligatoirement précéder le paramètre effectif qui n’a pas besoin d’avoir été initialisé :

Exemple :

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

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

// autre appel de cette même méthode  :
int x=10, y, z=0; // y n'est pas initialisé
z = modifier ( x, out y);

Dans les deux précédents appels la valeur de y est la même : y = 100 (recopie de la valeur locale b=100).



using System;

class Exercice
{
public static void Main(string[ ] args) // méthode principale de lancement de l'exécution
{
int x=10, y=20, z=0;
Console.WriteLine("( avant appel de somme1( ) ) x = "+x+" , y = "+y+" et  z = "+z);
z = modifier (x , out y);
Console.WriteLine("( après appel de somme1( ) ) x = "+x+" , y = "+y+" et  z = "+z);
Console.WriteLine("(----------------------------------------------------------------------");
int u=10, v, w=0;
Console.WriteLine("( avant appel de somme2( ) ) u = "+u+" , v = non assignée et  w = "+w);
w=modifier (u, out v);
Console.WriteLine("( après appel de somme2( ) ) u = "+u+" , v = "+v+" et  w = "+w);
Console.ReadLine();
}
public static int modifier ( int a , out int b) 
{
b = 100; // la valeur locale de b est initialisée
return a+b; 
}
}



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