2009-03-21 10 views
28

Was ist der am besten geeignete Container nur für Strings, die in einem Array mit nicht vorgegebenen oberen Grenzen gehalten werden, deren Länge bei der Erstellung unbekannt ist.Bester String-Container: StringCollection, Collection <string>, Liste <string>, ArrayList, ..?

Für einfachen Code wie:

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

Ist es StringCollection als optimierte Sammlung für String oder nur Collection<string> oder List<string> oder ArrayList? Was ist der Unterschied zwischen ihnen?

+0

In Verbindung stehende Frage zur Leistung speziell: https://stackoverflow.com/questions/7774374/performance-concern-stringcollection-vs-liststring –

Antwort

34

Für was Sie brauchen, ist List<string> wahrscheinlich die vielseitigste. StringCollection war praktisch in 1.1, wenn Sie (ohne Generika) bestimmte Klassen für typisierte Sammlungen benötigten. Collection<string> ist praktisch, wenn Sie es zu Unterklasse wollen Validierung zur Verfügung zu stellen usw.

So oder so, in 3.5, LINQ für sie viele weitere Methoden zur Verfügung stellen - aber ohne LINQ, List<T> verfügt über mehr Features (Find, Sort, usw.)

14

Eine List<T> wäre am effizientesten. Die Klasse Collection<T> ist nur ein Wrapper für einen anderen Listentyp. Der parameterlose Konstruktor initialisiert Collection<T> mit List<T>.

Ein ArrayList ist im Wesentlichen das gleiche wie ein List<object>, also müssten Sie beim Lesen die Artikel auf String umwandeln.

Ein StringCollection ist nur eine Art sichere Wrapper für eine ArrayList.