Во-первых, тип Func<T,U>
является тип делегата для функции с одним входом типа T
и выходом типа U
. Таким образом, в этом примере функция F
принимает два входа: p
- это функция, которая принимает целое число как входной сигнал и возвращает целое число как результат, равно q
. Функция F
также возвращает объект Func<int, int>
. Функция, возвращаемая F
, - это тот, который сначала вызывает q
, а затем вызывает p
с выходом q
, переданным в p
.
В Main
, функция, которая добавляет один (n => n + 1
) передается в качестве значения p
и квадратной функции (n => n * n
) передается в течение q
. Это означает, что F
возвращает новую функцию, которая принимает свой вход, квадратично (выполняет операцию q
), а затем добавляет ее (выполняет операцию p
).
И наконец, 10
поставляется в качестве аргумента для этой функции, поэтому результат 10*10 + 1 = 101
.
конкретно, с чем вы столкнулись? –
Практически все ... Я не вижу, как программа получает ответ 101 – M0rty
Есть две функции, передаваемые 'F' -' p' & 'q'. 'q' применяется сначала к' x' и 'p' применяется к результату этого. Так как 'x == 10', у вас есть' 10 * 10', а затем '100 + 1'. – Enigmativity