Tout au début du tutoriel, nous avons appelé des méthodes en passant des types simples (
int,
string, etc.). Nous avons vu qu’il s’agissait de types valeur qui possèdent directement la valeur dans la variable.
Lorsque nous passons des types valeur en paramètre d’une méthode, nous utilisons un passage de paramètre par valeur.
Décortiquons l’exemple suivant :
Code : C# 1
2
3
4
5
6
7
8
9
10
11
12 | static void Main(string[] args)
{
int age = 30;
Doubler(age);
Console.WriteLine(age);
}
public static void Doubler(int valeur)
{
valeur = valeur * 2;
Console.WriteLine(valeur);
}
|
Nous déclarons dans la méthode
Main() une variable
age, de type entier, à laquelle nous affectons la valeur 30.
Nous appelons ensuite la méthode
Doubler() en lui passant cette variable en paramètre.
Ce qu’il se passe c’est que le compilateur fait une copie de la valeur de la variable
age pour la mettre dans la variable
valeur de la méthode
Doubler(). La variable
valeur a une portée égale au corps de la méthode
Doubler().
Nous modifions ensuite la valeur de la variable
valeur en la multipliant par deux. Étant donné que la variable
valeur a reçu une copie de la variable
age, c'est-à-dire que le compilateur a dupliqué la valeur 30, le fait de modifier la variable
valeur ne change en rien la valeur de la variable
age.
En effet, si nous exécutons le code du dessus, nous allons avoir :
Nous passons 30 à la méthode
Doubler() qui calcule le double de la variable
valeur. On affiche 60. Lorsqu’on revient dans la méthode
Main(), nous retrouvons la valeur initiale de la variable
age. Elle n’a bien sûr pas été modifiée car la méthode
Doubler() a travaillé sur une copie.
Rappelez-vous que ceci est possible car les types intégrés sont facilement copiables, car peu évolués.