В документах MSDN говорится, что дизайнеры сознательно не добавили ForEach с массивом из-за того, что: 1) писать тривиально, 2) точно вашу проблему - люди запутаются, будет ли оригиналМассив изменен или нет.
Большинство типов реализации итератора массива ForEach (вам на самом деле нужна функция «map») возвращает новый экземпляр массива.Например, вы можете использовать LINQ:
newArray = dimensionPowers.Select(i => IntPow(2,i)).ToArray();
или лучше:
dimensionPowers = Enumerable.Range(0, dimensions + 1).Select(i => IntPow(2,i)).ToArray();
Однако, если вы хотите изменить исходный массив на месте, есть старый добрыйцикл:
for (int i=0; i < dimensionPowers.Length; i++) { dimensionPowers[i] = IntPow(2,i); }
Разработчики для .NET вынуждают вас использовать эти разные методы только для того, чтобы вы знали, когда изменяется массив.
Если вы хотите реализовать свойПоместив модификацию, вы можете создать метод расширения:
static void ForEachModifyInPlace<T> (this Array<T> array, Func<T,T> map_action) {
for (int i=0; i < array.Length; i++) { array[i] = map_action(array[i]); }
}