Выбор ответа Junior Делегаты и события спрашивают часто обновлено

Чем event отличается от поля-делегата

Вопрос

Что запрещает ключевое слово event по сравнению с публичным полем-делегатом?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Снаружи доступны только += и -=: нельзя вызвать или присвоить. event это обёртка над делегатом с методами add и remove.

Варианты ответа

  1. Событию нельзя подписывать лямбды, только именованные методы
  2. Событие нельзя объявить в интерфейсе, только в классе
  3. Снаружи доступны только += и -=: нельзя вызвать или присвоитьправильный ответ
  4. Событие вызывается асинхронно в пуле потоков, а делегат синхронно

Разбор

event это обёртка над делегатом с методами add и remove. Снаружи класса доступны только += и -=: нельзя вызвать событие от чужого имени и нельзя стереть всех подписчиков через = или = null. Лямбды подписывать можно, события объявляют в интерфейсах (INotifyPropertyChanged). Вызов события синхронный, в том же потоке, по очереди.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме