2012-01-19 24 views

Respuesta

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

intenté esto. Recibo un error de seguimiento en este "Al menos un elemento en la matriz fuente no pudo ser arrojado al tipo de matriz de destino" –

+0

Sé que esto es muy tarde, pero la razón por la que está recibiendo ese error es porque probablemente tengas una ArrayList con elementos que no sean cadenas, y tratas de lanzar los elementos a la cadena, lo cual no tiene ningún sentido – 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

Traté this.but que estoy recibiendo un error tras error \t 'System.Collections.ArrayList' no contiene una definición de 'Seleccionar' y ningún método de extensión 'Seleccionar' aceptar un primer argumento de tipo 'del sistema. Collections.ArrayList 'se puede encontrar (¿falta una directiva using o una referencia de ensamblado?) –

+0

Debe incluir 'using System.Linq;' en la parte superior del archivo. También me faltaba una llamada '.Cast ()'. – Nuffin

+0

¿Alguien se preocupa de explicar el voto a la baja? mi respuesta no parece tan mala para mí ... – Nuffin

1

uso .ToArray(Type)

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

emm ... ¿escribí algo mal, para obtener un voto a favor? :/ – Reniuz

2

Intenta hacer eso con ToArray() método.

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

Puede usar el método CopyTo del objeto ArrayList.

Digamos que tenemos un arraylist, que tiene String Type as Elements.

strArrayList.CopyTo(strArray) 
4

Un simple Google o una búsqueda en MSDN lo hubiera hecho. Aquí:

ArrayList myAL = new ArrayList(); 

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

Otra forma es la siguiente.

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); 
Cuestiones relacionadas