2009-03-21 22 views
28

¿Cuál es el contenedor más adecuado solo para cadenas que se sostienen en una matriz con límite superior no predeterminado, cuya longitud se desconoce en su creación.Mejor contenedor de cadena: StringCollection, Colección <string>, Lista <string>, ArrayList, ...?

Para el código simple como:

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

¿Es StringCollection como Colección optimizado para la cadena, o simplemente Collection<string> o List<string> o ArrayList? ¿Cuál es la diferencia entre ellos?

+0

Pregunta relacionada con el rendimiento específicamente: https://stackoverflow.com/questions/7774374/performance-concern-stringcollection-vs-liststring –

Respuesta

34

Para lo que necesita, List<string> es probablemente el más versátil. StringCollection fue útil en 1.1, cuando (sin genéricos) necesitaba clases específicas para colecciones tipadas. Collection<string> es práctico si quieres a una subclase para proporcionar la validación etc.

De cualquier manera, en el punto 3.5, LINQ proporcionará un montón de métodos adicionales para ellos - pero sin LINQ, List<T> tiene más características (Find, Sort, etc)

14

A List<T> sería el más eficiente.

La clase Collection<T> es solo un contenedor para otro tipo de lista, el constructor sin parámetros inicializa el Collection<T> con un List<T>.

Un ArrayList es esencialmente lo mismo que un List<object>, por lo que tendrías que enviar los elementos al String al leerlos.

A StringCollection es solo un tipo de envoltura segura para ArrayList.

Cuestiones relacionadas