Otras respuestas explican por qué su código actual no funciona. Aquí es un método de extensión que solucionarlo:
// Must be in a static non-nested class
public static void ModifyEach<T>(this IList<T> source,
Func<T,T> projection)
{
for (int i = 0; i < source.Count; i++)
{
source[i] = projection(source[i]);
}
}
A continuación, utilice la siguiente manera:
newsplit.ModifyEach(x => "WW");
que funcionará con cualquier aplicación de IList<T>
tales como matrices y List<T>
. Si necesita que funcione con un IEnumerable<T>
arbitrario, entonces tiene un problema, ya que la secuencia en sí misma puede no ser mutable.
usando Select()
es un enfoque más funcional, por supuesto, pero a veces la mutación de una colección existente es digno de hacer ...
Es una matriz de cadenas o en mi caso una lista IEnumerable como yo no creo que es? –
Jon
@Jon: arrays y List son compatibles con la interfaz IEnumerable –
No creo que Select() sea lo que Jon quiere, parece que quiere modificar el IEnumerable. Seleccionar solo le dará los elementos que ya son "WW" – AgileJon