При решении очередной проблемы опять сталкнулся со встроенным делегатом Func. Никак не могу понять его предназначение, как он работает и как устроен. Может кто-то на каком-то простом примере объяснить что это, для чего используется, как это работает и как этим пользоваться?
Ответ
Допустим мы имеем метод, который рисует графики различных функций, для простоты - алгебраических, вида y=f(x). Нашему методу все равно какую именно функцию данного вида рисовать, главное чтобы вид функции совпадал с заданным. тогда мы можем определить наш метод следующим образом:
public void DrawFunc(Func
Теперь для отрисовки графика нам нужно вызвать наш метод и передать ему подходящую функцию. Для Func< double, double> нам подойдет любая функция вида double FuncName(double ParamName), например Math.Sin. Вызов будет выглядеть так:
DrawFunc(Math.Sin);
Данный делегат, как и аналогичный ему Action используется в основном для быстрого объявления делегатов стандартного вида. Определено несколько отдельных делегатов вида Func< T1,...,T16,TResult>, и Action< T1,...,T16> которые могут принимать до 16-ти параметров (.NET 4+, до 4-х для .NET 3.5), типы которых указываются при объявлении. Кроме этого для Func необходимо указать тип возвращаемого значения TResult, у Action возвращаемое значение всегда void. Больше ничем от обычных делегатов они не отличаются.
тут уже обсуждалась очень похожая тема и есть еще немного информации
Комментариев нет:
Отправить комментарий