Bonjour,
Je viens de tomber sur une réaction plutôt bizarre de mon code.
Soit 2 classes :
Les chiffres et fonctions sont fictives bien évidement, mais le fonctionnement est le même que dans mon projet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 class TableauGest { public int[,] board; public TableauGest(int dimensionX, int dimensionY) { board = new int[dimensionX, dimensionY]; for (int i = 0; i < dimensionX; i++) { for (int j = 0; j < dimensionY; j++) { board[i, j] = 0; } } } //diverses autres fonction pour gérer le tableau } class TableauCalc { public void AjouterValeur(TableauGest tableau) { tableau.board[2, 3] = 4; } }
Donc avec ces deux classes, si dans mon main je fait :
Là, à mon grand étonnement, la valeur de testTableauGest.board[2, 3] est changée pour 4
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 TableauGest testTableauGest = new TableauGest(5 , 6); TableauCalc testTableauCalc = new TableauCalc(); testTableauCalc.AjouterValeur(testTableauGest);.
Hors, vu que n'utilise pas le mot clé ref, la valeur du tableau d'origine ne devrait pas être changée, si?
Donc, mon but, est de faire en sorte que le tableau testTableauGest du main() ne soit pas modifié par la fonction testTableauCalc.AjouterValeur(). Avez vous une idée du problème?
Moi qui croyais avoir appréhendé la notion de référence en C#, me voilà tout perdu![]()
Partager