Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1096 of 1492 menu
◀ ▶

Событие

Ключевое слово event объявляет делегат, на который снаружи можно только подписаться или отписаться - операторы += и -=. Вызов события из класса-владельца выполняют как обычный делегат, часто через ?.Invoke. Так скрывают детали и не дают постороннему коду перезаписать список подписчиков.

Синтаксис

public event Action Имя; объект.Имя += обработчик; Имя?.Invoke();

Пример

Давайте подпишемся на event и получим сообщение при вызове:

using System; class Notifier { public event Action? Done; public void Run() { Done?.Invoke(); } } class Program { static void Main() { var notifier = new Notifier(); notifier.Done += () => Console.WriteLine("abcde"); notifier.Run(); } }

Результат выполнения кода:

"abcde"

Пример

Давайте добавим второго подписчика через +=:

using System; class Notifier { public event Action? Ping; public void Fire() { Ping?.Invoke(); } } class Program { static void Main() { var notifier = new Notifier(); notifier.Ping += () => Console.Write("1"); notifier.Ping += () => Console.Write("2"); notifier.Fire(); } }

Результат выполнения кода:

12

Пример

Давайте отпишем обработчик оператором -=:

using System; class Notifier { public event Action? Ping; public void Fire() { Ping?.Invoke(); } } class Program { static void Main() { var notifier = new Notifier(); Action handler = () => Console.WriteLine("skip"); notifier.Ping += handler; notifier.Ping -= handler; notifier.Ping += () => Console.WriteLine("12345"); notifier.Fire(); } }

Результат выполнения кода:

"12345"

Смотрите также

  • свойство get и set,
    которое хранит состояние между вызовами
  • ключевое слово class,
    в котором объявляют события
  • модификатор public,
    которым открывают событие подписчикам
  • оператор if,
    которым проверяют данные перед вызовом
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить