Упражнения C#

Модель издатель-подписчик на событиях в C#

В этом уроке вы будете оповещать подписанные объекты при каждом изменении статуса заказа с помощью событий.

Введение

События позволяют внешнему коду подписываться на уведомления, но вызвать событие может только класс, которому оно принадлежит. Это безопасный способ реализовать в C# модель издатель-подписчик.

Класс Order объявляет событие StatusChanged типа EventHandler<string>, то есть вместе с ним передаётся строка с новым статусом. В Main лямбда подписывается, чтобы выводить статус на экран. При вызове Update("Shipped") оператор ?. вызывает событие, только если есть подписчики, поэтому программа выводит Shipped.

Пример на C#, который можно запустить

C#
Запустить код →
Program.cs
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

Практика с отладчиком

Поставьте точку останова на важное присваивание или условие, нажмите Debug и посмотрите локальные значения, прежде чем перейти к следующей строке.

Попрактикуйтесь на задаче

Примените материал этого урока к реальной задаче. Каждая задача запускается в браузере, с мгновенными тестами и разбором от ИИ.

Все задачи