Выбор ответа Junior Делегаты и события спрашивают часто обновлено
Чем event отличается от поля-делегата
Вопрос
Что запрещает ключевое слово event по сравнению с публичным полем-делегатом?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Снаружи доступны только += и -=: нельзя вызвать или присвоить. event это обёртка над делегатом с методами add и remove.
Варианты ответа
- Событию нельзя подписывать лямбды, только именованные методы
- Событие нельзя объявить в интерфейсе, только в классе
- Снаружи доступны только
+=и-=: нельзя вызвать или присвоитьправильный ответ - Событие вызывается асинхронно в пуле потоков, а делегат синхронно
Разбор
event это обёртка над делегатом с методами add и remove. Снаружи класса доступны только += и -=: нельзя вызвать событие от чужого имени и нельзя стереть всех подписчиков через = или = null. Лямбды подписывать можно, события объявляют в интерфейсах (INotifyPropertyChanged). Вызов события синхронный, в том же потоке, по очереди.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.