Pregunta

Me gustaría rellenar un arraylist mediante la especificación de una lista de valores al igual que yo sería una matriz de enteros, pero no estoy seguro de cómo hacerlo sin necesidad de repetir las llamadas al método "add".

Por ejemplo, quiero asignar { 1, 2, 3, "texto1", "texto2" } a un objeto arraylist.Sé que para otras matrices se puede hacer la asignación como:

int[] IntArray = {1,2,3};

Es allí una manera similar a hacerlo por un arraylist?He probado el addrange método, pero la llave método no implementar la interfaz ICollection.

¿Fue útil?

Solución

Lista de matriz ha cto r de que acepta ICollection, el cual es implementado por la clase Array.

object[] myArray = new object[] {1,2,3,"string1","string2"};
ArrayList myArrayList = new ArrayList(myArray);

Otros consejos

Dependiendo de la versión de C# que está utilizando, usted tiene diferentes opciones.

C# 3.0 ha inicializadores de colección, detalle en Scott Gu del Blog

He aquí un ejemplo de su problema.

ArrayList list = new ArrayList {1,2,3};

Y si usted es inicializar un objeto de colección, la mayoría de los constructores que tome componentes similares a AddRange, aunque de nuevo como usted ha mencionado que esto puede no ser una opción.

Sus comentarios implican que usted eligió ArrayList porque fue el primer componente que se encuentra.

Suponiendo que usted está buscando simplemente una lista de enteros, esta es probablemente la mejor manera de hacerlo.

List<int> list = new List<int>{1,2,3};

Y si usted está usando C# 2.0 (Que ha genéricos, pero no los inicializadores de colección).

List<int> list = new List<int>(new int[] {1, 2, 3});

Aunque la int[] formato puede no ser correcta en las versiones anteriores, puede que tenga que especificar el número de elementos en la matriz.

Supongo que usted no está utilizando C# 3.0, que ha inicializadores de colección.Si usted no está preocupado acerca de la sobrecarga de crear una temp conjunto, podría hacerlo como esta en 1.1/2.0:

ArrayList list = new ArrayList(new object[] { 1, 2, 3, "string1", "string2"});

(tipo de responder a mi propia pregunta, pero...)

Lo más parecido que he encontrado a lo que yo quiero es hacer uso de ArrayList.Adaptador de método:

object[] values = { 1, 2, 3, "string1", "string2" };
ArrayList AL = new ArrayList();
AL = ArrayList.Adapter(values);

//or during intialization
ArrayList AL2 = ArrayList.Adapter(values);

Esto es suficiente para lo que necesito, pero tenía la esperanza de que se podría hacer en una sola línea, sin la creación de la matriz temporal como alguien le había sugerido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top