Лучший контейнер строк: 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
? В чем разница между ними?
Ответы
Ответ 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
.