Pasar de ArrayList a array en C#
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.
Tu articulo es muy bueno, me ayudo mucho.
Me gusto mucho….
Esta super tu ejemplo..muchas gracias…
que hay del paso contrario?se puede convertir de array de string[] a Arraylist??
Sí, es sencillo:
string[] cadenas = new string[]{«esto»,»es»,»una»,»prueba»};
ArrayList lst = new ArrayList(cadenas);
HOLAs un favor podrian decirme como es para convertir de un array aun tipo string… se lo agradeceria
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
disculpen quisiera saber como se declaro un array dinamico en c#
y como lo utilizo }… gracias..
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.
Excelente solucion.
Muy bueno!!!
🙂 y útil!!!
Saludos!
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
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…
¿como ordeno alfabéticamente uan lista de string?
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?
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
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
Hola Luis, puedes por ejemplo crearte un ArrayList con el array y realizar luego una llamada al método Sort.
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…
yo creo que tienes razon soy estudiante de informatica y utilizo el mismo metodo de burbuja
Mejor que el burbuja es el quick sort, o el merge. De todas formas el arrayList ya contiene un método sort para ordenar.
Intentaba pasar un arraylist a un campo array de una estructura y no había forma.
Gracias me ha ayudado mucho.
Estoy tratando de realizar un traspazo pero al array me keda null no se porke porfa ayudenme ke llevo bastante tiempo en esto… les dejo el codigo
arraylistalarma guarda todos los valores de un datatimepicker guardado en una base de datos, si no estoy mal el arraylist guarda los datos como un objeto.
datosalarma = (string[])arraylistalarma.ToArray(typeof(string));
Alfonso, si lo que quieres es tener un array con los datos del ArrayList, lo que tienes que hacer es sustituir «string» por el tipo de los datos que estés almacenando en el ArrayList. La variable datosalarma debería ser un array de elementos de este mismo tipo.
creo lo mismo pero en verdad ke de metodos no muy bien
podrias explicar lo de arraylist
Hola:
Una sugerencia, deberías hacer un
nombres.TrimToSize()
antes de hacer el
return (string[])nombres.ToArray(typeof(string));
Un saludo desde Asturias
Tengo este codigo y quiero que un grid me muestre el contenido del archivo de texto pero solo me da el length y no el contenido
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections;
namespace LectorTexto
{
public partial class frmLectorTexto : Form
{
public frmLectorTexto()
{
InitializeComponent();
}
private void bttDarRuta_Click(object sender, EventArgs e)
{
this.opfRutaArchivo.Filter = «Archivos de texto (*.txt)|*.txt»;
if (this.opfRutaArchivo.ShowDialog() == DialogResult.OK)
{
//MessageBox.Show(«El Path seleccionado es:» + this.opfRutaArchivo.FileName);
dgvResultado.DataSource = leerArchivo(this.opfRutaArchivo.FileName);
}
}
private string[] leerArchivo(string pathDelArchivo)
{
ArrayList valores = new ArrayList();
string texto = «»;
FileStream archivo = new FileStream(pathDelArchivo, FileMode.Open, FileAccess.Read);
StreamReader archivoLeido = new StreamReader(archivo);
while ((texto = archivoLeido.ReadLine()) != null)
{
valores.Add(texto);
}
return (string[])valores.ToArray(typeof(string));
}
}
}
Gracias XD me sirvio de mucha ayuda XD
Hola alguien podría auxiliarme en el siguiente código como puedo utilizar una lista en vez de un vector, me lo han dejado de tarea pero no lo se, soy nueva en C#, por favor ayúdenme!
static void main (string [] args)
{
Animal[] vecanimales=new Animal[3];
Perro objperro = new Perro();
Gato objgato = new Gato();
Perico objperro = new Perico();
vecanimales[0]=objperro;
vecanimales[0]=objgato;
vecanimales[0]=objperico;
for (int i=0;i<=2;i++)
{
console.WriteLine("Sonido: "+vecanimales[i].sonar());
}
}
Dulce, es fácil, si te lo han puesto de tarea es para que aprendas, no para que te lo hagan, seguro que estás de acuerdo.