Карточка Junior Делегаты и события обновлено
Стандартный шаблон события
Вопрос
Как принято объявлять событие в .NET?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
public event EventHandler<OrderPaidEventArgs? OrderPaid; Аргументы наследуют EventArgs.
Ответ
public event EventHandler<OrderPaidEventArgs>? OrderPaid;
Аргументы наследуют EventArgs. Вызов в защищённом виртуальном методе:
protected virtual void OnOrderPaid(OrderPaidEventArgs e) => OrderPaid?.Invoke(this, e);
Разбор
Первый параметр sender это источник события, второй данные. Виртуальный On... позволяет наследникам реагировать без подписки.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Чем event отличается от поля-делегата
Следующий вопрос
Исключение в одном из подписчиков