2012-02-10 21 views
5

mam linię kodu:Nie można utworzyć tablicę listy obiektów

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

Jego celem jest po prostu utworzyć tablicę obiektów List. Kiedy próbuję skompilować mój kod, powyższa linia generuje ten błąd:

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

I nie były w stanie znaleźć wiele na temat tworzenia tablicę obiektów list (faktycznie tylko this gwintem), może dlatego, żadne wyszukiwarki nie będą wyszukiwać nawiasów.

Czy jest to jedyny sposób, aby utworzyć zbiór list, aby umieścić je na innej liście, na przykład poniżej?

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

Dzięki za wszelkie sugestie, jestem naprawdę ciekaw, dlaczego pierwsza linia kodu (lista [] przykład) nie działa.

+3

Prosty błąd, usuń nawiasy. –

+0

Dzięki, nie mogę uwierzyć, że nie pomyślałem, aby spróbować. –

+0

Zrobić interesujący, zapytaj, dlaczego komunikat o błędzie jest tak kiepski. –

Odpowiedz

6

Można to zrobić. Składnia byłoby:

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

Należy pamiętać, że to tylko alokuje tablicę odnośników - trzeba właściwie skonstruować poszczególne elementy listy przed ich użyciem:

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

Alternatywnie, można użyć składnia inicjalizacji kolekcji (działa dobrze dla małej liczby elementów stałych), tj .:

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

Dzięki, nie wiedziałem o "składni inicjalizacji kolekcji", widzę, że byłoby to przydatne. –

6

Spróbuj tego:

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

Robisz inicjalizacji każdej listy potem:

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

Dzięki, działa! –

3
 var listArray = new List<string>[2]; 
     for (var i = 0; i < listArray.Length; i++) 
     { 
      listArray[i] = new List<string>(); 
     } 
Powiązane problemy