добавление элемента в список создает исключение ArgumentOutOfRangeException - PullRequest
0 голосов
/ 29 декабря 2018

Мой код выдает это:

ArgumentOutOfRangeException: Аргумент выходит за пределы диапазона.
Имя параметра: ошибка индекса

Когда он находит элемент в спискекоторые имеют количество меньше определенного числа.какие-нибудь идеи о том, как исправить код?

Я добавил код debug.log везде, чтобы точно определить, где происходит ошибка, потому что Visual Studio не подчеркивает ошибки.

List<int> emptyRows = new List<int>();
for (int j = 0; j < gridPositions.Count; j++) // try to find if a row is still empty
                {
                    Debug.Log("gridPositions[" + j + "].Count is " + gridPositions[j].Count);
                    Debug.Log("columns are" + columns);
                    if (gridPositions[j].Count == columns)
                    {
                        Debug.Log("trying to add to emptyrows");
                        emptyRows.Add(j);
                        Debug.Log("added to emptyrows and its count is " + emptyRows.Count);
                    }
                    else
                    {
                        Debug.Log("found an occupied row at row " + j);
//ERROR STRIKES HERE
                    }
                    Debug.Log("emptyRows is " + emptyRows[j]);
                    Debug.Log("emptyRows count is " + emptyRows.Count);
                }

Я ожидаю, что emptyRows будет отслеживать и записывать все незанятые строки, но когда он заполняет занятую строку, он не переходит к циклу for и останавливается.

1 Ответ

0 голосов
/ 29 декабря 2018

Вы добавляете в emptyRows только если (gridPositions [j] .Count == столбцы)

Но вы получаете доступ к emptyRows [j] для каждого значения j

Так что emptyRowsв итоге получается меньше элементов, чем значение j

...