Встречается на 12% собеседований по C#

Что такое событие

Событие (event) в C# — это механизм, позволяющий объекту уведомлять другие объекты о произошедших действиях. Основан на паттерне "Издатель-Подписчик".

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

  • Объявляется с ключевым словом event.
  • Тип события — делегат (Action, EventHandler или кастомный).
  • Подписка через +=, отписка через -=.

Пример:

csharp
public class Button
{
    public event EventHandler Clicked;  

    public void Click()
    {
        Clicked?.Invoke(this, EventArgs.Empty); // Проверка на null и вызов
    }
}

// Использование:
var button = new Button();
button.Clicked += (sender, e) => Console.WriteLine("Button clicked!");
button.Click(); // Выведет "Button clicked!"

Нюансы:

  • Потокобезопасность: лучше сохранять делегат в локальную переменную перед вызовом.
  • Отписка: важно избегать "утечек" памяти, отписываясь от событий, когда они не нужны.

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы