Такую задачу обычно дают в универах, да бы студенты понимали, что вообще скрывается под словом динамический массив. Ведь массив имеет ограниченное число возможных элементов с заранее неизменяемым размером, и безгранично в него невозможно добавлять их.
То есть, к примеру, если Вы создали массив, который содержит пять элементов, то увеличить данный размер динамически Вы уже не сможете, так как он является фиксированным. В этом можно легко убедиться, воспользовавшись свойством IsFixedSize.
Так какой выход, как решить тогда поставленную задачу?
static void Main(string[] args) { int tmpLength = 0; int[] numbersArr = new int[5] { 1, 2, 3, 4, 5 }; tmpLength = numbersArr.Length; //5 Console.WriteLine(tmpLength); Array.Resize(ref numbersArr, numbersArr.Length + 1); tmpLength = numbersArr.Length; //6 Console.WriteLine(tmpLength); Console.ReadKey(); }
Мы воспользовались методом Array.Resize который позволяет увеличивать динамически массив, но на самом деле он создает новый, увеличивая его размерность на одну еденицу.
В языке C# стандартные массивы имеют фиксированную длину, которую необходимо указывать при создании. Но что делать, если заранее неизвестно, сколько элементов потребуется? В этом случае используется динамический массив.
Что такое динамический массив?
Динамический массив — это структура данных, размер которой может изменяться во время выполнения программы. В C# для создания динамического массива чаще всего используют коллекцию List<T>
, которая реализует гибкую работу с данными.
Почему List<T>
, а не обычный массив?
Обычный массив в C# нельзя изменить по длине после его создания. В отличие от него, List<T>
:
- Автоматически расширяется при добавлении новых элементов;
- Поддерживает методы
Add()
,Remove()
,Insert()
и другие; - Обеспечивает гибкое управление данными без необходимости вручную создавать новый массив.
Альтернативы List<T>
Для более специфичных задач можно использовать:
ArrayList
(устаревший, не типобезопасный);LinkedList<T>
— для частых вставок и удалений внутри списка;ObservableCollection<T>
— если нужен отслеживаемый список для UI (например, в WPF).
Заключение
Для создания динамического массива в C# рекомендуется использовать List<T>
. Он прост в использовании, универсален и эффективен при работе с изменяемыми наборами данных.