在C#中,事件(Event)是一种特殊类型的委托,用于实现发布者-订阅者模式。事件提供了一种机制,使发布者能够通知订阅者某个特定的操作已经发生。
// 定义事件发布者类
class Publisher
{
// 定义事件
public event EventHandler<MyEventArgs> MyEvent;
// 触发事件
public void RaiseEvent(string message)
{
MyEventArgs args = new MyEventArgs(message);
OnMyEvent(args);
}
// 发起事件通知
protected virtual void OnMyEvent(MyEventArgs e)
{
MyEvent?.Invoke(this, e);
}
}
// 定义事件参数类
class MyEventArgs : EventArgs
{
public string Message { get; }
public MyEventArgs(string message)
{
Message = message;
}
}
// 定义事件订阅者类
class Subscriber
{
// 事件处理方法
public void HandleEvent(object sender, MyEventArgs e)
{
Console.WriteLine("Event handled: " + e.Message);
}
}
// 创建发布者和订阅者对象
Publisher publisher = new Publisher();
Subscriber subscriber = new Subscriber();
// 订阅事件
publisher.MyEvent += subscriber.HandleEvent;
// 触发事件
publisher.RaiseEvent("Hello, World!");
在以上示例中,Publisher 类定义了一个事件 MyEvent,Subscriber 类定义了一个事件处理方法 HandleEvent。通过订阅 MyEvent 事件,Subscriber 对象可以接收到事件触发时的通知。