Разница между событиями и обратными вызовами
В чём заключается разница между событиями (events) и обратными вызовами (callbacks) в C#?
Ответы (1 шт):
Технически ни в чём. И там и там в качестве ссылки на метод или методы используется один и тот же делегат MulticastDelegate
.
Как известно любой делегат может быть мультикастом и инвокая тот же экшн можно вызвать сразу несколько колбэков, но обычно так никто не делает.
Логически разница в удобстве применения. В современном коде мало кто колбэки в чистом виде использует. Потому что во-первых, есть события, во-вторых есть асинхронное программирование.
Что касается ключевого слова event
- так это просто ограничитель, обязавающий реализовать шаблон проектирования Publisher/Subscriber, а именно вы не сможете инвокнуть делегат события за пределами класса, где он объявлен. А внутри класса сможете, потому что по шаблону сам класс - паблишер, а все остальные сабскрайберы, которым можно только подписываться.