События и их генерация в C#
НАВИГАЦИЯ ПО СТРАНИЦЕ
События в C# представляют собой механизм, позволяющий объектам уведомлять другие объекты о том, что произошло определенное действие. Они часто используются для реализации паттерна наблюдатель ("Observer") в объектно-ориентированном программировании.
Определение событий:Событие — это механизм, позволяющий классу оповещать другие классы о том, что что-то произошло.
Они объявляются с использованием ключевого слова event.
public class Publisher { public event EventHandler SomeEvent; public void RaiseEvent() { OnSomeEvent(); } protected virtual void OnSomeEvent() { SomeEvent?.Invoke(this, EventArgs.Empty); } }
Подписка на события :Классы могут подписываться на события других классов для обработки уведомлений.
public class Subscriber { public void Subscribe(Publisher publisher) { publisher.SomeEvent += HandleEvent; } private void HandleEvent(object sender, EventArgs e) { Console.WriteLine("Event handled"); } }
Генерация и вызов событий :Классы, определяющие события, могут вызывать их, уведомляя подписчиков о произошедших событиях.
public class Program { public static void Main(string[] args) { Publisher publisher = new Publisher(); Subscriber subscriber = new Subscriber(); subscriber.Subscribe(publisher); publisher.RaiseEvent(); } }
Пример кода:
using System;
public class Publisher
{
public event EventHandler SomeEvent;
public void RaiseEvent()
{
OnSomeEvent();
}
protected virtual void OnSomeEvent()
{
SomeEvent?.Invoke(this, EventArgs.Empty);
}
}
public class Subscriber
{
public void Subscribe(Publisher publisher)
{
publisher.SomeEvent += HandleEvent;
}
private void HandleEvent(object sender, EventArgs e)
{
Console.WriteLine("Event handled");
}
}
public class Program
{
public static void Main(string[] args)
{
Publisher publisher = new Publisher();
Subscriber subscriber = new Subscriber();
subscriber.Subscribe(publisher);
publisher.RaiseEvent();
}
}
Этот код показывает класс Publisher, который определяет событие SomeEvent, класс Subscriber, который подписывается на это событие и метод Main, который создает экземпляры классов и вызывает событие.
События позволяют объектам взаимодействовать, оповещая друг друга о произошедших событиях. Они предоставляют гибкий механизм для реагирования на изменения в программе.