Action
ничего не возвращает, равно как и Array.ForEach
- но ваше лямбда-выражение возвращает, и вы пытаетесь использовать результат Array.ForEach
, несмотря на то, что это метод void. Вместо этого попробуйте Array.ConvertAll
, в котором используется Converter<TInput, TOutput>
(эквивалент Func<TIn, TOut>
).
В качестве альтернативы, если вы хотите изучить Array.ForEach
и Action
, сделайте что-то вроде:
Array.ForEach(Numbers, x => Console.WriteLine(x * x));
(Кроме того, ваша первая попытка выглядит как смесь синтаксиса анонимного метода и синтаксиса лямбда-выражения. Это не сработает.)
Как это:
int[] squares = Array.ConvertAll(numbers, x => x*x);