Типы Func и Action в C#
В предыдущих уроках уже встречались Func
для лямбд с результатом и Action для блоков
без возвращаемого значения. Ниже - та же
схема типов в общем виде.
Func<TResult> описывает лямбду без
аргументов, которая возвращает TResult.
Func<T, TResult> принимает один
аргумент типа T и возвращает TResult.
Для двух аргументов используют
Func<T1, T2, TResult>, и так далее. Пример для Func:
Func<int> pick = () => 42;
Func<int, int> inc = (int n) => n + 1;
Console.WriteLine(pick());
Console.WriteLine(inc(4));
У Action та же схема имён, но без типа
результата: в угловых скобках перечисляют
только параметры - Action,
Action<T>, Action<T1, T2>
и дальше по числу аргументов:
Action ping = () => Console.WriteLine("ping");
Action<string> echo = (string s) => Console.WriteLine(s);
Action<int, int> pair = (int a, int b) => Console.WriteLine(a + b);
ping();
echo("ok");
pair(2, 3);
Объявите Func<string, bool> notEmpty,
которая возвращает true, если длина
строки больше нуля. Выведите результат
для "a" и "".