В чем разница между array и List?

Хотя в языке C# есть массивы, которые хранят в себе наборы однотипных объектов, но работать с ними не всегда удобно. Например, массив хранит фиксированное количество объектов, однако что если мы заранее не знаем, сколько нам потребуется объектов. И в этом случае намного удобнее применять коллекции. Еще один плюс коллекций состоит в том, что некоторые из них реализует стандартные структуры данных, например, стек, очередь, словарь, которые могут пригодиться для решения различных специальных задач. Большая часть классов коллекций содержится в пространстве имен System.Collections.Generic.


Контейнер array представляет аналог массива. Он также имеет фиксированный размер.

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

В контейнер array нельзя добавлять новые элементы, так же как и удалять уже имеющиеся. Основные функции типа array, которые мы можем использовать:

  • size(): возвращает размер контейнера
  • at(index): возвращает элемент по индексу index
  • front(): возвращает первый элемент
  • back(): возвращает последний элемент
  • fill(n): присваивает всем элементам контейнера значение n

Класс List<T> из пространства имен System.Collections.Generic представляет простейший список однотипных объектов. Класс List типизируется типом, объекты которого будут хранится в списке.

Мы можем создать пустой список:

1List<string> people = new List<string>();

В данном случае объект List типизируется типом string. А это значит, что хранить в этом списке мы можем только строки.

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

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

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