Хотя в языке C# есть массивы, которые хранят в себе наборы однотипных объектов, но работать с ними не всегда удобно. Например, массив хранит фиксированное количество объектов, однако что если мы заранее не знаем, сколько нам потребуется объектов. И в этом случае намного удобнее применять коллекции. Еще один плюс коллекций состоит в том, что некоторые из них реализует стандартные структуры данных, например, стек, очередь, словарь, которые могут пригодиться для решения различных специальных задач. Большая часть классов коллекций содержится в пространстве имен System.Collections.Generic.
Контейнер array представляет аналог массива. Он также имеет фиксированный размер.
Фиксированный размер накладывает ограничение на инициализацию и использование подобных контейнеров. В частности, для инициализации мы не можем использовать стандартные для большинства контейнеров конструкторы. А при списочной инициализации количество передаваемых контейнеру элементов не должно превышать его размер.
В контейнер array нельзя добавлять новые элементы, так же как и удалять уже имеющиеся. Основные функции типа array, которые мы можем использовать:
- size(): возвращает размер контейнера
- at(index): возвращает элемент по индексу index
- front(): возвращает первый элемент
- back(): возвращает последний элемент
- fill(n): присваивает всем элементам контейнера значение n
Класс List<T> из пространства имен System.Collections.Generic
представляет простейший список однотипных объектов. Класс List типизируется типом, объекты которого будут хранится в списке.
Мы можем создать пустой список:
1 | List< string > people = new List< string >(); |
В данном случае объект List типизируется типом string. А это значит, что хранить в этом списке мы можем только строки.
Можно сразу при создании списка инициализировать его начальными значениями. В этом случае элементы списка помещаются после вызова конструктора в фигурных скобках