Listy - problem

0

Witam mam problem z uzyciem listy tablic deklaruje ją następująco
List<int[]> miasta = new List<int[]>();
elementy do niej dodaje następująco :

int[] pozycje = new int[2];
miasta.Add(pozycje);

I mam problem ponieważ robię to w pętli. Dodawanie działa w liście jest odpowiednia ilość obiektów ale wartość ich za każdym razem się zmienia (ostatnią wartość tablicy pozycje mają wszystkie elementy) wartość tablicy się zmienia z biegiem pętli i systematycznie dodaje ją do listy. Co zrobić aby lista zapamiętywała wszystkie wartości a nie tylko ostatnią? dziękuje każdemu za pomoc.

0

Dzieje się tak dlatego, że lista zawiera tylko referencje do danej tablicy. Jeżeli jej wartość się zmienia to zmienia się wartość którą zwraca referencja. Musisz po prostu za każdym razem tworzyć nową instancję tablicy poprzez new. (Przynajmniej tak myślę ... ;p)

Ew. musisz używać do tego typów wartościowych. Zaraz dorwę się do książki i ci znajde informacje na ten temat. (Bo mam nadzieje, że na stronie rozwiązania poszukasz sam)

0

jesli robisz to tak, jak poniezej, to robisz zle

List<int[]> list = new List<int[]>();
            int[] tab = new int[2];
            for (int i = 0; i < 3; i++)
            {
                tab[0] = i;
                tab[1] = i + 1;
                list.Add(tab);
            }

dlaczego? bo array (int[]) to reference type!

powinno byc:

List<int[]> list = new List<int[]>();
            for (int i = 0; i < 3; i++)
            {
                int[] tab = new int[2];
                tab[0] = i;
                tab[1] = i + 1;
                list.Add(tab);
            }

1 użytkowników online, w tym zalogowanych: 0, gości: 1