Страницы

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

четверг, 2 января 2020 г.

Изменить размер массива динамически

#c_sharp #массивы #динамические_массивы


Например есть такой массив, как изменить его размер с 4 на другое число?    

int[] array = new int[4];

    


Ответы

Ответ 1



Вы подходите неправильно. Если вам нужно менять размер контейнера, вы должны вместо массива использовать List. Вы не сможете изменять размер, добавляя неинициализированные элементы, но вы сможете добавить элемент в конец при помощи Add, в начало или середину при помощи Insert, или удалять по индексу при помощи RemoveAt.

Ответ 2



В вашем примере управляемый массив. Напрямую - никак, только через аллокацию (выделение памяти) нового массива. Например есть метод Array.Resize, внутри он создает новый массив заданного размера, копирует в него содержимое старого массива и возвращает ссылку на новый массив. Если очень сильно нужно изменить размер неуправляемого массива без аллокации нового - можно воспользоваться нативным классом (функция HeapReAlloc) из моего вопроса: Инспекция класса для работы с HeapAlloc

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

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