2012-01-19 19 views

risposta

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

ho provato questo.I sto ricevendo seguente errore su questo "Almeno un elemento nella matrice di origine non può essere lanciato verso il basso per il tipo di matrice di destinazione" –

+0

So che questo è molto tardi, ma il motivo si sta ricevendo quell'errore è perché probabilmente hai una ArrayList con elementi che non sono stringhe, e stai provando a lanciare gli elementi sulla stringa, il che non ha alcun senso – 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

ho provato this.but sto ottenendo seguente errore Errore \t 'System.Collections.ArrayList' non contiene una definizione per 'Seleziona' e nessun metodo di estensione 'Seleziona' accettare un primo argomento di tipo 'sistema. Collections.ArrayList 'potrebbe essere trovato (ti manca una direttiva using o un riferimento di assembly?) –

+0

Devi includere 'using System.Linq;' nella parte superiore del file. Inoltre mi mancava una chiamata '.Cast ()'. – Nuffin

+0

Qualcuno si preoccupa di spiegare il downvote? la mia risposta non mi sembra affatto male ... – Nuffin

1

uso .ToArray(Type)

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

emm ... ho scritto qualcosa di sbagliato, per ottenere downvote? :/ – Reniuz

2

Prova farlo con ToArray() metodo.

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

È possibile utilizzare il metodo CopyTo dell'oggetto ArrayList.

Diciamo che abbiamo un arraylist, che ha String Type come Elements.

strArrayList.CopyTo(strArray) 
4

Un semplice Google o ricerca su MSDN l'avrebbe fatto. Qui:

ArrayList myAL = new ArrayList(); 

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

Un altro modo è il seguente.

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); 
Problemi correlati