Подтвердить что ты не робот

Лучший контейнер строк: StringCollection, Collection <string>, List <string>, ArrayList,..?

Что является наиболее подходящим контейнером только для строк, удерживающих в некотором массиве с не заданной верхней границей, длина которой неизвестна при создании.

Для простого кода:

var list = new SomeContainer(); // size is unknown
for()/foreach()/do()/while() // any loop
{
  list.Add(string);
}

Является ли оно StringCollection оптимизированным для коллекции для строки или просто Collection<string> или List<string> или ArrayList? В чем разница между ними?

4b9b3361

Ответ 1

Для чего вам нужно List<string>, вероятно, наиболее универсальный. StringCollection был удобен в 1.1, когда (без генериков) вам нужны специальные классы для типизированных коллекций. Collection<string> удобно, если вы хотите подклассифицировать его для проверки и т.д.

В любом случае, в 3.5, LINQ предоставит для них множество дополнительных методов, но без LINQ List<T> имеет больше возможностей (Find, Sort и т.д.)

Ответ 2

A List<T> будет наиболее эффективным.

Класс Collection<T> является просто оболочкой для другого типа списка, конструктор без параметров инициализирует Collection<T> с помощью List<T>.

An ArrayList по существу то же самое, что и List<object>, поэтому при чтении из него вы должны были бы переместить элементы в String.

A StringCollection - это только безопасная оболочка типа для ArrayList.