+ 1
Cual es la manera mas eficiente de agregar y eliminar elementos a una lista que esta siendo iterada (C#)
Tengo una aplicación que ejecuta una serie de tareas en un tiempo definido, estas tareas están en una lista que se va recorriendo y a su vez se van eliminando tareas que se ejecutan en cada iteracion, el caso es que al agregar elementos a esa lista mientras se esta recorriendo/vaciando modifica la cantidad de elementos, causando errores en algunos casos, entonces, como se pueden crear colas de tareas o listas que se puedan procesar y añadir a la vez?
1 Odpowiedź
+ 1
var array = { 1, 2, 3, 4, 5 }
array = array.Where(item => item != 3).ToArray(); //retira el 4o. elemento
Pode fazer um método de extensão para ter um removeAt() (que existe em um List) no Array:
public static T[] RemoveAt<T>(this T[] source, int index) {
T[] dest = new T[source.Length - 1];
if( index > 0 )
Array.Copy(source, 0, dest, 0, index);
if( index < source.Length - 1 )
Array.Copy(source, index + 1, dest, index, source.Length - index - 1);
return dest;
}