Здравствуйте, Hard_Club, Вы писали:
H_C>Что такое делегат в программировании?
Вот тебе пример. Есть электронная таблица, вроде экселя. В разных ячейках могут быть разные типы: строка, дата, формула и т.д. Сама таблица с ними работать не умеет, а когда пользователь жмет на ячейку, просто вызывает метод объекта привязанного к данной ячейке, который и сделает всю работу — вот он и есть делегат. Таким образом в нашей таблице будут следующие объекты: Table, DateDelegate, TextDelegate и т.д.
Здравствуйте, Hard_Club, Вы писали:
H_C>Что такое делегат в программировании?
Делегат -- это обобщённый указатель на функцию. Может быть привязан к статической функции или к паре (объект,метод).
В C# это встроенный тип, в С++ реализуется разными способами.
Здравствуйте, sysenter, Вы писали:
S>Это в C# типобезопасный указатель на функцию/метод, который сам есть объект, поддерживает асинхронность и т.п.
В с# это класс
Здравствуйте, Шахтер, Вы писали:
H_C>>Что такое делегат в программировании? Ш>Делегат -- это обобщённый указатель на функцию. Может быть привязан к статической функции или к паре (объект,метод). Ш>В C# это встроенный тип, в С++ реализуется разными способами.
Делегат — это базовое понятие проектирования, существовавшее задолго до C#, но теперь благодаря сишарпу его ошибочно считают эдакой объектно-ориентированной версией указателя на функцию.
Делегаты C# являются частным случаем делегации вообще, но делегация это намного более широкое понятие. Например в prototype-based programming делегация необработанных вызовов является центральным механизмом, работающим вместо наследования. В фреймворке Cocoa делегация применяется очень широко, для кастомизации поведения/рисования и для обработки некоторых событий, но опять же никакого аналога указателей на функцию не использует и собой не представляет.
Здравствуйте, Hard_Club, Вы писали:
H_C>Делегат должен быть обязательно мембером, как тут : http://en.wikipedia.org/wiki/Delegation_pattern H_C>Или такого же эффекта можно добиться с помощью наследования?
Здравствуйте, Hard_Club, Вы писали:
Кё>>Делегат должен быть другим объектом, заменяемым.
H_C>Значит мембером или параметром?
Да какая разница. Делегат — это тот, кому делегируют работу. Это такой подход в программировании. Это понятие вообще может относиться к ЯП, в котором нет ни мемберов, ни параметров.
Здравствуйте, Hard_Club, Вы писали: H_C>Что такое инверсия контроля?
Инверсия управления. Это когда хвост виляет собакой. Или, более реальный пример, покупаешь пятый айфон, а он на андроиде. Или берешь жену, чтобы готовила и детей растила, а в итоге получает выеденный мозг и алименты. Короче, веселых примеров в жизни достаточно, в коде приблизительно те же сайд эффекты.
Всё, что нас не убивает, ещё горько об этом пожалеет.