Страницы

Поиск по вопросам

воскресенье, 16 февраля 2020 г.

System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта

#c_sharp


Всем привет. Пишу игру "Сапёр", работающую из окна консоли. Возникает ошибка на участке
кода:

                    field = new cell[ySize][];
                    for (int i = 0; i


Ответы

Ответ 1



Ответ @Surfin Bird верный, давайте я объясню, что происходит. Вы объявили массив массивов. Для массива нужно выделять память при помощи new, но элементами вашего массива являются одномерные массивы! Под каждый из них тоже нужно выделять память. Получится такая картинка: field ---> [ элемент 0 ][ элемент 1 ][ элемент 2 ][ элемент 3 ]... | | | | | | | | V V V V [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] Вы создали верхнюю строку, но не остальные. Альтернативным решением могло быть выделение прямоугольного многомерного массива. В этом случае вы получаете сразу нужные элементы: Cell[,] field; // ... field = new Cell[xSize][ySize];

Ответ 2



Похоже, инициализацию нужно заменить на: for (int i = 0; i < ySize; i++){ field[i] = new cell[xSize]; for (int j = 0; j < xSize; j++) field[i][j] = new cell(); } }

Комментариев нет:

Отправить комментарий