Sobes.tech
Назад к вопросам
Junior — Middle
53

Каким образом осуществляется регистрация на событие для его получения?

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Для получения события нужно подписаться на него через обработчик. Обычно это делается через +=, когда к событию добавляется метод-обработчик. Затем объект-источник вызывает событие, а все подписчики получают уведомление.

Определение:

В C# регистрация на событие — это подписка обработчика на событие объекта-издателя. Событие обычно основано на делегате, а подписка выполняется добавлением метода с совпадающей сигнатурой. Когда событие вызывается, все зарегистрированные обработчики выполняются.

Пример использования:

using System;

class Button
{
    public event EventHandler? Clicked;

    public void Click()
    {
        Clicked?.Invoke(this, EventArgs.Empty);
    }
}

class Program
{
    static void Main()
    {
        var button = new Button();

        button.Clicked += OnButtonClicked;

        button.Click();

        button.Clicked -= OnButtonClicked;
    }

    static void OnButtonClicked(object? sender, EventArgs e)
    {
        Console.WriteLine("Кнопка была нажата");
    }
}

Пояснение кода:

Код показывает типичную схему “издатель-подписчик”.
Сначала в классе Button объявлено событие Clicked.
Затем в Main выполнена подписка через button.Clicked += OnButtonClicked; — это и есть регистрация на событие.
При вызове button.Click() событие запускается через Clicked?.Invoke(...), и метод OnButtonClicked получает уведомление.
После этого подписку можно снять через -=.

Ключевые моменты:

  • Подписка на событие в C# обычно делается через оператор +=.
  • Отписка выполняется через -=.
  • Обработчик должен иметь совместимую сигнатуру с типом события.
  • Событие вызывается только внутри класса-издателя, снаружи его можно только подписывать и отписывать.
  • Если подписку не снять, объект может дольше оставаться в памяти из-за удержания ссылок на обработчики.