Другие ответы объяснили, почему ваш текущий код не работает. Вот метод расширения, который бы это исправил:
// 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]);
}
}
Тогда используйте вот так:
newsplit.ModifyEach(x => "WW");
Это будет работать с любой реализацией IList<T>
, такой как массивы и List<T>
. Если вам нужно, чтобы он работал с произвольным IEnumerable<T>
, тогда у вас есть проблема, так как сама последовательность не может быть изменяемой.
Использование Select()
, конечно, более функциональный подход, но иногда нужно поменять существующую коллекцию стоит сделать ...