2009-03-21 5 views
28

Что является наиболее подходящим контейнером только для строк, удерживающих в некотором массиве с не заданной верхней границей, длина которой неизвестна при его создании.Лучший контейнер для струн: StringCollection, Collection <string>, Список <string>, ArrayList, ..?

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

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

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

+0

Связанный с этим вопрос касательно производительности: https://stackoverflow.com/questions/7774374/performance-concern-stringcollection-vs-liststring –

ответ

34

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

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

14

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^