Модель издатель-подписчик на событиях в C#
В этом уроке вы будете оповещать подписанные объекты при каждом изменении статуса заказа с помощью событий.
Введение
События позволяют внешнему коду подписываться на уведомления, но вызвать событие может только класс, которому оно принадлежит. Это безопасный способ реализовать в C# модель издатель-подписчик.
Класс Order объявляет событие StatusChanged типа EventHandler<string>, то есть вместе с ним передаётся строка с новым статусом. В Main лямбда подписывается, чтобы выводить статус на экран. При вызове Update("Shipped") оператор ?. вызывает событие, только если есть подписчики, поэтому программа выводит Shipped.
Пример на C#, который можно запустить
using System;
class Order
{
public event EventHandler<string>? StatusChanged;
public void Update(string status) => StatusChanged?.Invoke(this, status);
}
class Program
{
static void Main()
{
var order = new Order();
order.StatusChanged += (_, status) => Console.WriteLine(status);
order.Update("Shipped");
}
}
ShippedПрактика с отладчиком
Попрактикуйтесь на задаче
Примените материал этого урока к реальной задаче. Каждая задача запускается в браузере, с мгновенными тестами и разбором от ИИ.
Все задачи