Как создать динамический массив на C#?

Такую задачу обычно дают в универах, да бы студенты понимали, что вообще скрывается под словом динамический массив. Ведь массив имеет ограниченное число возможных элементов с заранее неизменяемым размером, и безгранично в него невозможно добавлять их.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.