2012-02-10 31 views
5

que tienen una línea de código como este:No se puede crear una serie de objetos de lista

List<string>[] apples = new List<string>()[2]; 

Su propósito es simplemente para crear una matriz de objetos de lista. Cuando intento compilar mi código, la línea anterior genera este error:

Cannot implicitly convert type 'string' to 'System.Collections.Generic.List[]

no he podido encontrar mucho sobre el tema de la creación de una matriz de objetos de lista (en realidad sólo this hilo), tal vez porque ningún motor de búsqueda buscará corchetes.

¿Es la única manera de crear una colección de listas para ponerlas en otra lista, como a continuación?

List<List<string>> apples = new List<List<string>>(); //I've tried this and it works as expected 

Gracias por cualquier sugerencia, estoy muy curioso en cuanto a por qué la primera línea de código (el ejemplo de lista []) no funciona.

+3

Error simple, elimine los paréntesis. –

+0

Gracias, no puedo creer que no pensé en probar eso. –

+0

Hazlo interesante, pregunta por qué el mensaje de error es tan malo. –

Respuesta

6

Usted puede hacer esto. La sintaxis sería:

List<string>[] apples = new List<string>[2]; 

Tenga en cuenta que esto sólo se asigna un conjunto de referencias - se necesita para construir en realidad los elementos individuales de la lista antes de usarlos:

List<string>[] apples = new List<string>[2]; 
apples[0] = new List<string>(); 
apples[1] = new List<string>(); 

Como alternativa, puede utilizar la sintaxis de inicialización de colección (funciona bien para pequeños números de elementos fijos), es decir:

List<string>[] apples = new[] { new List<string>(), new List<string>() }; 
+0

Gracias, no sabía acerca de la 'sintaxis de inicialización de colección', puedo ver cómo sería útil. –

6

Prueba esto:

List<string>[] apples = new List<string>[2]; 

Haces la inicialización de cada lista después:

apples[0] = new List<string>(); 
+0

¡Gracias, funciona! –

3
 var listArray = new List<string>[2]; 
     for (var i = 0; i < listArray.Length; i++) 
     { 
      listArray[i] = new List<string>(); 
     } 
Cuestiones relacionadas