Изменение размера массива c #

#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, изменение размера массивов по одному элементу за раз обходится очень дорого. Список использует гораздо более умный алгоритм, и вам не нужно копировать элементы в новый массив самостоятельно.