2012-01-19 16 views

Odpowiedz

48
string[] myArray = (string[])myarrayList.ToArray(typeof(string)); 
+1

próbowałem to. Otrzymuję następujący błąd: "Co najmniej jeden element w tablicy źródłowej nie może zostać odrzucony do docelowego typu tablicy" –

+0

Wiem, że to bardzo późno, ale powód, dla którego otrzymujesz ten błąd ponieważ prawdopodobnie masz ArrayList z elementami, które również nie są ciągami i próbujesz rzucić elementy na ciąg, co nie ma żadnego sensu – Eames

1
using System.Linq; 

public static string[] Convert(this ArrayList items) 
{ 
    return items == null 
     ? null 
     : items.Cast<object>() 
      .Select(x => x == null ? null : x.ToString()) 
      .ToArray(); 
} 
+0

próbowałem this.but otrzymuję następujący błąd Błąd \t „System.Collections.ArrayList” nie zawierają definicji „Wybierz” i nie ma metodę rozszerzenia „Select” zaakceptowaniem pierwszego argumentu typu „system. Kolekcje.ArrayList "można znaleźć (czy brakuje dyrektywy użycia lub odniesienia do zestawu?) –

+0

Musisz umieścić' using System.Linq; 'na górze pliku. Również brakowało mi wywołania '.Cast ()'. – Nuffin

+0

Czy ktoś chce wyjaśnić sprawę? moja odpowiedź nie wydaje mi się to złe ... – Nuffin

1

użycie .ToArray(Type)

string[] stringArray = (string[])arrayList.ToArray(typeof(string)); 
+0

emm ... czy napisałem coś nie tak, aby uzyskać awans? :/ – Reniuz

2

Spróbuj zrobić z ToArray() metody.

ArrayList a= new ArrayList(); //your ArrayList object 
var array=(String[])a.ToArray(typeof(string)); // your array!!! 
0

Można użyć metody CopyTo obiektu ArrayList.

Załóżmy, że mamy listę tablic, która ma Typ ciągu jako elementy.

strArrayList.CopyTo(strArray) 
4

Wystarczyło Google lub wyszukiwanie w witrynie MSDN. Tutaj:

ArrayList myAL = new ArrayList(); 

// Add stuff to the ArrayList. 
String[] myArr = (String[]) myAL.ToArray(typeof(string)); 
0

Inny sposób jest następujący.

System.Collections.ArrayList al = new System.Collections.ArrayList(); 
al.Add("1"); 
al.Add("2"); 
al.Add("3"); 
string[] asArr = new string[al.Count]; 
al.CopyTo(asArr); 
Powiązane problemy