Pasar de ArrayList a array en C#

Patxi Echarte, May 22nd, 2005

Hay bastantes ocasiones en las que escribo código en .NET para métodos que necesito que me devuelvan arrays de elementos, sin embargo, dentro de estos métodos normalmente trabajo con ArrayList o algún otro tipo de colección. Esto suele ser habitual cuando dentro del método, no es posible saber a priori el número de elementos que tendrá el array, o que aun siendo posible, no resulta tan eficiente como almacenar los elementos temporalmente en una colección tipo ArrayList por ejemplo, y pasarlas luego a un array.

Para estos casos la clase Arraylist dispone de un método de nombre “ToArray” mediante el cual es posible pasar todo su contenido a un array. Para ello es únicamente necesario indicar al método el tipo de elementos que contiene el ArrayList y hacer un cast al resultado del método, de forma que pasemos de object[] al tipo de array que necesitemos.

// este método de ejemplo lo único que hace es devolver
// un array de strings con tantos elementos como le indiquemos
public string[] GetNombres(int num)
{
   ArrayList nombres = new ArrayList();
   
   for(int i=0;i<num;i++)
      nombres.Add("Nombre "+i);
   
   return (string[])nombres.ToArray(typeof(string));
}

La última línea es la encargada de realizar la transformación de ArrayList a array de strings y devolver el resultado. Para ello lo primero que se hace es llamar al método ToArray, indicándole que el tipo de los elementos almacenados es string. Al resultado de llamar a este método la aplicamos un cast a string[], de forma que lo que obtenemos finalmente en un array de strings.

En aquellas circunstancias en las que los elementos almacenados en el ArrayList puedan no ser homogéneos sería necesario aplicar un control de errores para manejar la generación de excepciones.

Comparte esta información

21 Comentarios para “Pasar de ArrayList a array en C#”

  1. Luis dice:

    Tu articulo es muy bueno, me ayudo mucho.

  2. Andres dice:

    Me gusto mucho….

  3. alejo dice:

    Esta super tu ejemplo..muchas gracias…

  4. sonso dice:

    que hay del paso contrario?se puede convertir de array de string[] a Arraylist??

  5. Patxi dice:

    Sí, es sencillo:

    string[] cadenas = new string[]{”esto”,”es”,”una”,”prueba”};
    ArrayList lst = new ArrayList(cadenas);

  6. YULIA dice:

    HOLAs un favor podrian decirme como es para convertir de un array aun tipo string… se lo agradeceria

  7. Esteban dice:

    Hola,podría decirme si existe la forma de que un query de SQL se pueda almacenar en un array List, en sí quiero la forma como se puede ir desplazando en la base de datos para que se guarde en el array list. Les agradecería muchísimo

  8. jesus manuel dice:

    disculpen quisiera saber como se declaro un array dinamico en c#
    y como lo utilizo }… gracias..

  9. abraham dice:

    Patxi:

    Es mejor utilizar un ArrayList q un generico List; sera por rendimiento; tu articulo me ayudo, pero lo q necesito hacer es dentro del arreglo una busqueda; pero q no necesariamente se tenga q ordenar el arreglo.

  10. Hector dice:

    Excelente solucion.

  11. Aprendiz83 dice:

    Muy bueno!!!
    :) y útil!!!
    Saludos!

  12. Luchex dice:

    Por favor yo tengo un problema ya que mi arraylist contiene datos del tipo decimal y me da problemas de casteo, como puedo hacerle para convertir un arraylist con numeros a string[]

    creo que seria algo asi:

    public string[] GetNumeros(int num)
    {
    ArrayList nombres = new ArrayList();
    decimal n = 0;
    for (int i = 0; i

  13. EliSoft dice:

    esta muy bien tu ejemplo, pero no se si me puedeas ayudar, resulta que tengo unas carpetas con imagenes .jpg la que menos tiene son 6000, mi pregunta es debo utilizar un arreglo para leer y grabar en sqlserver todas las imagenes?, o como hago para decirle que lea cierta carpeta agarre la primera y luego la siguiente…

  14. Yei dice:

    ¿como ordeno alfabéticamente uan lista de string?

  15. SANTIAGO dice:

    HOLA, necesito un favor… he creadouna clase con 3 datos miembros,y varios objetos de la clase…A cada objeto lo he metido en un elemento de mi arraylist, una vez los objetos adentro del array, quisiera sacar la informacion de cada elemento de cada objeto ingresado en el arraylist? SE PUEDE HACER ESO?

  16. Iván dice:

    hola, quisiera ver si me pueden ayudar deseo ver si puedo alamacenar arraylist dentro de un arraylist y como accedere a ellos, espero me puedan ayudar gracias

  17. Luis dice:

    Hola tengo una duda y necesito que alguien me ayude

    Tengo un array de strings llamado Nombres {”Jose”,”Ana”,”Maria”}

    Mi problema es que tengo que ordenarlo y no puedo. Quise aplicar la burbuja pero para enteros lo tengo claro pero para string no, alguien me puede ayudar por favor?

    Gracias

  18. Patxi dice:

    Hola Luis, puedes por ejemplo crearte un ArrayList con el array y realizar luego una llamada al método Sort.

  19. Oscar dice:

    Mira Luis:
    Has algo facil…
    ultiliza cualquier metodo que quieras
    pero usa el mas facil “BURBUJA”
    con el siguiente Cambio
    internal static string[] Ordenar(string[] ArrCadenas)
    {
    int i=0,j=0;
    int[] aux=new int[1000];
    for(i=0;iaux[j])
    {
    temp=aux[i];
    aux[i]=aux[j];
    aux[j]=temp;
    }
    }
    return aux;
    }
    }
    y eso es todo…

  20. Adrian dice:

    yo creo que tienes razon soy estudiante de informatica y utilizo el mismo metodo de burbuja

  21. Roi dice:

    Mejor que el burbuja es el quick sort, o el merge. De todas formas el arrayList ya contiene un método sort para ordenar.

Deja un comentario