Разница между событиями и обратными вызовами

В чём заключается разница между событиями (events) и обратными вызовами (callbacks) в C#?


Ответы (1 шт):

Автор решения: aepot

Технически ни в чём. И там и там в качестве ссылки на метод или методы используется один и тот же делегат MulticastDelegate.

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

Логически разница в удобстве применения. В современном коде мало кто колбэки в чистом виде использует. Потому что во-первых, есть события, во-вторых есть асинхронное программирование.

Что касается ключевого слова event - так это просто ограничитель, обязавающий реализовать шаблон проектирования Publisher/Subscriber, а именно вы не сможете инвокнуть делегат события за пределами класса, где он объявлен. А внутри класса сможете, потому что по шаблону сам класс - паблишер, а все остальные сабскрайберы, которым можно только подписываться.

→ Ссылка