Лямбда как аргумент в C#
Параметр локальной функции может принимать
лямбду. Тип параметра пишут как Func
или Action. Внутри функции такой
аргумент вызывают как обычную функцию:
int ApplyTwice(int value, Func<int, int> fn) {
int first = fn(value);
return fn(first);
}
Func<int, int> add1 = (int n) => n + 1;
Console.WriteLine(ApplyTwice(3, add1));
Лямбда без аргументов подходит для отложенного действия. Функция может вызвать переданный блок один или несколько раз:
void RunSafe(Action fn) {
Console.WriteLine("begin");
fn();
Console.WriteLine("end");
}
Action work = () => Console.WriteLine("work");
RunSafe(work);
Напишите функцию Combine с двумя
целыми и параметром Func<int, int, int> fn.
Передайте лямбду умножения двух чисел.
Выведите результат Combine(6, 7).
Напишите функцию RepeatAction:
целое times и параметр Action fn.
Тело лямбды должно выполниться столько
раз, сколько задано в times.
Проверьте выводом "tick" три раза.