Pregunta

Yo tiendo a usar ArrayLists de estructuras. Es por tanto muy fácil de desplazarse por la lista con un foreach.

El problema que tengo es que no puedo utilizar un foreach para modificar el contenido de estructuras y tienen que utilizar una de typecasts y desordenado.

((dataStructure)files[x]).name = here;

¿Hay una manera más ordenado a hacerlo?

¿Fue útil?

Solución

Sé que esto suena simplista, pero acaba de decir no a los tipos de valor mutables .

Son casi no la solución adecuada al problema. Hay un muy pocas excepciones, pero las clases son casi siempre el camino a seguir.

Además, si realmente estás usando un ArrayList entonces usted estará incurriendo en un coste unboxing ya ... (Como dice Konrad, si se puede utilizar .NET 2.0 a continuación, utilizar los genéricos.)

Si realmente insiste en usar estructuras mutables, a continuación, utilizar un bucle en lugar de for foreach. Pero, por favor, por favor, cambie a las clases de todos modos.

Otros consejos

Sí, hay: no utilice un ArrayList sin tipo, estos tipos están en desuso en favor de los tipos genéricos en System.Collections.Generic. En su caso:. List<T>

Aún no se puede utilizar en conjunción con un foreach bucle para modificar los valores de estructura pero al menos no tiene que emitir.

Utilice la genérico versión de ArrayList:. List<DataStructure>

De esta manera las cosas se ven mucho mejor:

files[x].name = here;

Sí, hay casos en los List <T> tampoco es útil. En esos casos, el truco más viejo en los trabajos manuales. En lugar de foreach, se debe utilizar el bucle while:

while (listItem.Count >0)
{
//do operation with 0th element of List Item always like
 deletefunc(lisItem[0]);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top