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