Из for в foreach

string[] wNames = ...
for (int i = 0; i < wNames.Length; i++)
{
   wNames[i] = wNames[i].Substring(wNames[i].LastIndexOf(':') + 1).Trim();
}

Как данный пример перевести в foreach ? У меня не получается, пишет что невозможно присвоить wNames[i] =


Ответы (2 шт):

Автор решения: Fyodor

Когда ты используешь цикл foreach, ты не получаешь доступ к адресу ячеек массива, а извлекаешь только значения.

Для того чтобы изменять данные в массиве стоит использовать обычный цикл for. Если ты нуждаешься только в чтении данных из массива, то можно использовать for или foreach.

→ Ссылка
Автор решения: CrazyElf

С использованием Linq будет выглядеть практически так же на вид, только вообще без цикла и без индекса, потому что обрабатываются сразу все элементы массива:

wNames = wNames.Select(x => x.Substring(x.LastIndexOf(':') + 1).Trim()).ToArray();

А с помощью foreach поменять не получится, ну, это уже объяснили.

→ Ссылка