Каким образом осуществляется регистрация на событие для его получения?
Ответ от нейросети
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# обычно делается через оператор
+=. - Отписка выполняется через
-=. - Обработчик должен иметь совместимую сигнатуру с типом события.
- Событие вызывается только внутри класса-издателя, снаружи его можно только подписывать и отписывать.
- Если подписку не снять, объект может дольше оставаться в памяти из-за удержания ссылок на обработчики.