2009-03-21 12 views
28

Qual è il contenitore più adatto solo per stringhe che contengono in un array con limite superiore non predeterminato, la cui lunghezza è sconosciuta durante la sua creazione.Contenitore string migliore: StringCollection, Collezione <string>, Lista <string>, ArrayList, ..?

Per il codice semplice come:

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

E 'StringCollection come Collection ottimizzato per la stringa, o semplicemente Collection<string> o List<string> o ArrayList? Qual è il diverso tra loro?

+0

Domanda relativa alle prestazioni in particolare: https://stackoverflow.com/questions/7774374/performance-concern-stringcollection-vs-liststring –

risposta

34

Per quello che ti serve, List<string> è probabilmente il più versatile. StringCollection era a portata di mano in 1.1, quando (senza generici) avevi bisogno di classi specifiche per le raccolte tipizzate. Collection<string> è utile se si desidera creare una sottoclasse di fornire la convalida ecc

In entrambi i casi, al punto 3.5, LINQ fornirà un sacco di metodi aggiuntivi per loro - ma senza LINQ, List<T> ha più funzioni (Find, Sort, ecc)

14

A List<T> sarebbe il più efficiente.

La classe Collection<T> è solo un wrapper per un altro tipo di elenco, il costruttore senza parametri inizializza lo Collection<T> con un List<T>.

Un ArrayList è essenzialmente lo stesso di List<object>, quindi è necessario trasmettere gli elementi a String durante la lettura da esso.

A StringCollection è un wrapper di tipo sicuro per un ArrayList.