делегаты



Delegate

Автор KOLANICH задал вопрос в разделе Другие языки и технологии

Делегаты. Что такое делегаты? Подробно и популярно плз. На хабре и в википедии уже читал и ничего не понял. и получил лучший ответ

Ответ от Антон -[гуру]
Грубо говоря, это такой способ записать функцию в переменную.
Например, есть функция сортировки, она должны знать 2 вещи:
1) что сортировать (массив)
2) как сортировать (по какому критерию, как определить что должно стоять раньше, а что позже)
С первым аргументом всё просто. А вот "как сортировать" можно объяснить только кодом. Соответственно нужно передавать функции сортировки другую функцию, которая сможет выполнить сравнение любых двух элементов и вернуть результат сравнения.
Функции сравнения могут быть разными, сравнивать можно по возрастанию, по убыванию, по каким то другим критериям. А вот алгоритм сортировки от этого не меняется, нужно в любом случае как-то сравнить 2 элемента.
Вот чтобы передать одной функции другую функцию и используются делегаты. В нашем примере обязанности сравнения элементов как бы делегируются функции-делегату.
delegate int ComparerDelegate(double x, double y);
Функция сортировки:
void Sort(double[] array, ComparerDelegate comparer)
{
// тут сортировка с применением делегированного функционала сравнения
}
Пример с кодом ссылка.
KOLANICH
Гуру
(4578)
нормальный уровень, спасибо.
просто на хабре есть несколько статей про делегаты в с++, но они больно мудрёные, и выглядят так, как будто речь идёт о паттерне "подписчик"
а в википедии вообще нормальной инфы нет
в си/си++ это указатель на функцию, я верно вас понял ?

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Делегаты. Что такое делегаты? Подробно и популярно плз. На хабре и в википедии уже читал и ничего не понял.
спросили в Интернет
xhacker ru написано NOT DELEGATED значит заблокирован????
NOT DELEGATED - это значит "не делегирован", другими словами этот домен в данный момент никем не
подробнее...
спросили в Syoss
Интернет магазин siax.ru лохотрон или нет??
domain: SIAX.RU
type: CORPORATE
nserver: ns1.jino.ru.
nserver: ns2.jino.ru.
state:
подробнее...
спросили в Breath of Fire
напишите перевод, очень нужно
Let me tell you about my sea journey which I had in the age of seven.
Come up to the blackboard
подробнее...
спросили в Deep Dish Paramount Pictures
Поможете мне сделать перевод? плизззз
These news will be discused after lessons.
The windows will be washed in the end of the
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:
спросили в Интернет Zoom Corporation
Что это за сайт??
Это типо счетчик для сайта, вот данные где и кем и когда бы зарегистрирован он:

domain:
подробнее...
спросили в Интернет
Что делать, если украли сайт? (Подробности внутри)
вот выдача whois по доменному имени:
domain: LYOVKIN.RU
type: CORPORATE
nserver:
подробнее...
спросили в Интернет
Подскажите Host mail.ru
domain: MAIL.RU
type: CORPORATE
nserver: ns.mail.ru. 194.67.23.130
nserver: ns1.mail.ru.
подробнее...
спросили в Философия
может мне книжку написать по 3д макс, или по си шарп для чайников, а?!
Не пиши, все равно сопрут.. .
Лучше скажи как из VB.NET 10-ки достать EXCEL.
В частности как
подробнее...
спросили в Beketov
Vb. net и многопоточность UI
В Вашем примере НЕ создается поток. BeginInvoke предназначен для вызова методов кантрола из потока,
подробнее...
спросили в Riot grrrl
Преобразуйте,пожалуйста, прямую речь в косвенную

1. She said: “I will finish my work by the end of this month”. - She said that she would finish her
подробнее...
спросили в Другое DNS
DNS сервера mail.ru
domain: MAIL.RU
type: CORPORATE
nserver: ns.mail.ru. 94.100.178.70
nserver:
подробнее...
Делегат программирование на Википедии
Посмотрите статью на википедии про Делегат программирование
Делегация на Википедии
Посмотрите статью на википедии про Делегация
Шаблон делегирования на Википедии
Посмотрите статью на википедии про Шаблон делегирования
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*