modyfikacja elementów tablicy w pętli

0

witam,
problem jak w temacie. Mam pewną array_list i obracając ją w pętli muszę modyfikować jej elementy lecz gdy coś takiego robię kompilator od razu wyrzuca mi błąd, że kolekcja została zmodyfikowana i koniec działania programu.

Jak może to rozwiązać?

pozdrawiam
Paweł

0

Wróżka jest na wakacjach. Pokaż kod z zaznaczonym miejscem wystąpienia błędu.

Na oko wygląda tak, jakbyś używał pętli foreach, w której nie da się modyfikować elementów kolekcji.

0

Taki komunikat dostajesz gdy usuwasz elementy z iterowanej kolekcji. Przeczytaj sobie dyskusję - Usuwanie i przeszukiwanie SortedList z GoldenLine.

0

if (czy_kontroler = true) {
pobieranie = new ArrayList();
int tmp = 0;
int i = 0;

                foreach(int v in tab)
                {
                    tmp = tmp + v;

                    if (v <= type_ampli[1])
                    {
                        pobieranie.Add(v);
                        tab.RemoveAt(i); ;
                    }
                    else
                    {
                        tmp = tmp - v;
                    }
                    i++;
                }
                
            }

i tu akurat przykładowo usuwam ten element, ale mógłbym zerować i nic

0

Bo, jak już somekind napisał, korzystając z foreach masz elementy kolekcji tylko do readonly, nie możesz ich zmieniać, bo potem dostajesz po głowie.
Zrób pętlę for i będzie działało ok.

0

faktycznie mieliście racje, zrobiłem tak
if (czy_kontroler == true)
{
//zadeklarowana jako publiczna wyżej
pobieranie = new ArrayList();
int tmp = 0;

                for (int i = 0; i < (tablica.Length) - 1; i++)
                {
                    tmp = tmp + tablica[i];

                    if (tablica[i] <= type_ampli[1])
                    {
                        pobieranie.Add(tablica[i]);
                        //..usuwanie elementu z tablicy poprzdniej
                        tablica[i] = 0;
                    }
                    else
                    {
                        tmp = tmp - tablica[i];
                    }
                }
            }

i idzie, ale tu przypisuję 0 tej wartości a czy mogę np ją wyczyścić i zostawić pusty element tablicy?

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