Tämäntyyppisen ongelman kanssa joutunut jumittamaan, löytyisikö täältä apua? Tahtoisin siis pitää tuon Stackiin lisätyn sisällön muuttumattomana, sillä siitä olisi nimenomaan tarkoitus myöhemmin tarkistaa onko muutoksia tullut. :)
int[] yks = new int[] { 1, 2, 3 }; int[] kaks = new int[] { 4, 5, 6 }; int[] kolme = new int[] { 7, 8, 9 }; Stack<int[]> testi = new Stack<int[]>(); testi.Push(yks); testi.Push(kaks); testi.Push(kolme); int[] tulostus = testi.Pop(); kolme[2] = 1; foreach (int i in tulostus) { Console.Write(i); } // Output: 781 Tavoite: 789
Veikkaisin, että C# tallentaa Stack objektiin refrenssin sinne työntämääsi taulukkoon, ei taulukon sisältöä. Sinun tarvitsee varmaan toteuttaa jonkun sortin clone/copy.
Kopion saa tehtyä Clone-metodilla. Ehkä selvintä on kloonata kaikki jo pinoon laittamisen yhteydessä, jos tavoitteena tosiaan on saada sinne ”muuttumatonta” dataa.
Toimii. Kiitos neuvoista!
Aihe on jo aika vanha, joten et voi enää vastata siihen.