#c#
#c#
Вопрос:
У меня возникли некоторые проблемы с изменением размера массива c # 2D: у меня есть следующий код в разделе private:
private int[,] _TestArray;
В моем методе получения свойств я делаю:
if (_TestArray ==null)
_TestArray =new integer[1,1];
Затем в отдельной функции я делаю:
_TestArray =new[x,y];
где x и y — это два целых числа, которые должны быть новым размером массива.
когда я затем пытаюсь добавить элемент в массив, я получаю исключение index out of range, указывающее на строку:
TestArray[x, y] = 5;
У меня сложилось впечатление, что выполнение нового int[x,y] приведет к изменению размера массива, но, очевидно, это не так.
Может кто-нибудь, пожалуйста, скажите мне, что я пропустил?
Я просмотрел другие ответы, но, похоже, это не помогло.
Любая помощь приветствуется.
Приветствия
Шон.
Ответ №1:
Последним допустимым элементом в массиве является testArray[x-1, y-1]. Он начинает отсчет с 0. Итак, вы, вероятно, хотите использовать new int[x 1, y 1], но это предположение. Рассмотрите возможность использования List<Point>
вместо a, изменение размера массивов по одному элементу за раз обходится очень дорого. Список использует гораздо более умный алгоритм, и вам не нужно копировать элементы в новый массив самостоятельно.