Что такое делегат?
От: Hard_Club  
Дата: 02.01.13 11:40
Оценка: -1
Что такое делегат в программировании?

04.01.13 00:01: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
Re: Что такое делегат?
От: sysenter  
Дата: 02.01.13 11:44
Оценка:
Здравствуйте, Hard_Club, Вы писали:

H_C>Что такое делегат в программировании?


Это в C# типобезопасный указатель на функцию/метод, который сам есть объект, поддерживает асинхронность и т.п.
Re: Что такое делегат?
От: MTD https://github.com/mtrempoltsev
Дата: 02.01.13 12:57
Оценка:
Здравствуйте, Hard_Club, Вы писали:

H_C>Что такое делегат в программировании?


Вот тебе пример. Есть электронная таблица, вроде экселя. В разных ячейках могут быть разные типы: строка, дата, формула и т.д. Сама таблица с ними работать не умеет, а когда пользователь жмет на ячейку, просто вызывает метод объекта привязанного к данной ячейке, который и сделает всю работу — вот он и есть делегат. Таким образом в нашей таблице будут следующие объекты: Table, DateDelegate, TextDelegate и т.д.
Re: Что такое делегат?
От: Кодёнок  
Дата: 02.01.13 13:19
Оценка:
Здравствуйте, Hard_Club, Вы писали:

H_C>Что такое делегат в программировании?


http://en.wikipedia.org/wiki/Delegation_pattern

Когда один объект спроектирован так, чтобы часть работы делать через другой объект, первый называется делегатором, второй делегатом.
Re: Что такое делегат?
От: BurningInside Россия  
Дата: 02.01.13 13:43
Оценка:
Здравствуйте, Hard_Club, Вы писали:

H_C>Что такое делегат в программировании?


В СОМ есть такой "делегирующий IUnknown". Объяснять долго.
Re: Что такое делегат?
От: Аноним  
Дата: 02.01.13 16:22
Оценка: -1
Здравствуйте, Hard_Club, Вы писали:

H_C>Что такое делегат в программировании?


Это дурацкий термин из C# для функтора.
Re: Что такое делегат?
От: night beast СССР  
Дата: 02.01.13 17:41
Оценка:
Здравствуйте, Hard_Club, Вы писали:

H_C>Что такое делегат в программировании?


callback?
Re: Что такое делегат?
От: Шахтер Интернет  
Дата: 02.01.13 19:38
Оценка: 8 (1) +1
Здравствуйте, Hard_Club, Вы писали:

H_C>Что такое делегат в программировании?


Делегат -- это обобщённый указатель на функцию. Может быть привязан к статической функции или к паре (объект,метод).
В C# это встроенный тип, в С++ реализуется разными способами.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[2]: Что такое делегат?
От: a_g_99 США http://www.hooli.xyz/
Дата: 04.01.13 09:47
Оценка:
Здравствуйте, sysenter, Вы писали:

S>Это в C# типобезопасный указатель на функцию/метод, который сам есть объект, поддерживает асинхронность и т.п.

В с# это класс
Re[2]: Что такое делегат?
От: Кодёнок  
Дата: 04.01.13 09:58
Оценка: +1
Здравствуйте, Шахтер, Вы писали:

H_C>>Что такое делегат в программировании?

Ш>Делегат -- это обобщённый указатель на функцию. Может быть привязан к статической функции или к паре (объект,метод).
Ш>В C# это встроенный тип, в С++ реализуется разными способами.

Делегат — это базовое понятие проектирования, существовавшее задолго до C#, но теперь благодаря сишарпу его ошибочно считают эдакой объектно-ориентированной версией указателя на функцию.

Делегаты C# являются частным случаем делегации вообще, но делегация это намного более широкое понятие. Например в prototype-based programming делегация необработанных вызовов является центральным механизмом, работающим вместо наследования. В фреймворке Cocoa делегация применяется очень широко, для кастомизации поведения/рисования и для обработки некоторых событий, но опять же никакого аналога указателей на функцию не использует и собой не представляет.

http://en.wikipedia.org/wiki/Delegation_(programming)
http://en.wikipedia.org/wiki/Delegation_pattern
Re[3]: Что такое делегат?
От: Hard_Club  
Дата: 04.01.13 11:20
Оценка:
Делегат должен быть обязательно мембером, как тут : http://en.wikipedia.org/wiki/Delegation_pattern

Или такого же эффекта можно добиться с помощью наследования?
Re[4]: Что такое делегат?
От: Кодёнок  
Дата: 04.01.13 18:00
Оценка:
Здравствуйте, Hard_Club, Вы писали:

H_C>Делегат должен быть обязательно мембером, как тут : http://en.wikipedia.org/wiki/Delegation_pattern

H_C>Или такого же эффекта можно добиться с помощью наследования?

Делегат должен быть другим объектом, заменяемым.
Re[5]: Что такое делегат?
От: Hard_Club  
Дата: 04.01.13 18:07
Оценка:
Кё>Делегат должен быть другим объектом, заменяемым.

Значит мембером или параметром?
Re[6]: Что такое делегат?
От: AlexRK  
Дата: 04.01.13 18:10
Оценка:
Здравствуйте, Hard_Club, Вы писали:

Кё>>Делегат должен быть другим объектом, заменяемым.


H_C>Значит мембером или параметром?


Да какая разница. Делегат — это тот, кому делегируют работу. Это такой подход в программировании. Это понятие вообще может относиться к ЯП, в котором нет ни мемберов, ни параметров.
Re: Что такое делегат?
От: Vladek Россия Github
Дата: 05.01.13 08:52
Оценка:
Частный случай инверсии контроля. Два других: события и внедрение зависимостей.
Re[2]: Что такое делегат?
От: Hard_Club  
Дата: 05.01.13 10:20
Оценка:
Здравствуйте, Vladek, Вы писали:

V>Частный случай инверсии контроля. Два других: события и внедрение зависимостей.


Что такое инверсия контроля?
Re[3]: Что такое делегат?
От: Vladek Россия Github
Дата: 06.01.13 03:31
Оценка:
Вот, например, статья: http://en.m.wikipedia.org/wiki/Inversion_of_control
Re[2]: Что такое делегат?
От: hardcase Пират http://nemerle.org
Дата: 17.01.13 10:04
Оценка:
Здравствуйте, Vladek, Вы писали:

V>Частный случай инверсии контроля.


Только наверно не "контроля" а "управления".
/* иЗвиНите зА неРовнЫй поЧерК */
Re[3]: Что такое делегат?
От: Ромашка Украина  
Дата: 22.01.13 02:23
Оценка: :)
Здравствуйте, Hard_Club, Вы писали:
H_C>Что такое инверсия контроля?

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


Всё, что нас не убивает, ещё горько об этом пожалеет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.