1. Повторите концепцию обратного вызова
    Если у вас нет четкой концепции обратного вызова, вам следует прочитать статью о Обратный вызов в javascript, которую я написал.

2. Делегат на C #

Здесь, чтобы передать функцию GiveGift, мы должны использовать тип данных Delegate (указатель на функцию). Мы объявляем делегат в соответствии со следующим синтаксисом:

В C # делегаты часто используются вместе с событиями. Разработчики Winform не странно используют код, который вызывает это событие:

Эта статья ориентирована только на делегатов, поэтому вы можете узнать больше о делегатах и ​​мероприятиях на других страницах.

3. Action, Predicate, Func в C #

В этом разделе я хотел бы представить Action, Predicate, Func (сокращенно APF для быстрого) на C #. Как вы читали в классной серии статей о C #, разработчики Microsoft очень ленивы. Поэтому они всегда добавляют что-то на C #, поэтому наши разработчики такие же ленивые. На самом деле APF - это ленивый способ для нас объявлять делегатов.

Действие: действие ‹T in1, T in2,…›. Действие эквивалентно делегату с типом возврата void, in1, in2 - это полученные параметры.
Предикат: Предикат ‹T in›. Предикат эквивалентен делегату с возвращаемым типом bool, где print является входным параметром. Предикат может принимать только один параметр.
Func: Func ‹T in1, T in2,…, T result›. Функция эквивалентна делегату с возвращаемым типом, потому что мы объявляем (результат), in1, in2 - это полученные параметры. Func требуется для возврата значения, не может платить недействительно.

Для облегчения понимания см. Следующую таблицу. Вот таблица, в которой сравниваются объявления с делегатом, а также соответствующие объявления по Action, Predicate и Func:

Вы будете удивлены, узнав, что AFP в сочетании с лямбда-выражением и некоторыми другими вещами… создали «харизму» LINQ, без которой Java жаждет красных глаз, должен быть добавлен в Java SDK 8.
Я напишу о «харизме» LINQ в следующих статьях.
Не забудьте прочитать.