在C#中,事件(Event)是一种特殊的委托,用于实现基于发布-订阅模式的通信机制。事件提供了一种在类之间进行松耦合通信的方式,允许一个类(发布者)通知其他类(订阅者)发生了某个特定的动作。

以下是关于C#事件的基本概念和用法:

1. 定义事件:
// 声明事件的委托
public delegate void MyEventHandler(object sender, EventArgs e);

// 声明包含事件的类
public class MyClass
{
    // 定义事件
    public event MyEventHandler MyEvent;

    // 触发事件的方法
    protected virtual void OnMyEvent()
    {
        MyEvent?.Invoke(this, EventArgs.Empty);
    }

    // 其他类可以调用这个方法来触发事件
    public void DoSomething()
    {
        // 做一些事情...

        // 触发事件
        OnMyEvent();
    }
}

2. 订阅事件:
public class Subscriber
{
    // 订阅事件的方法
    public void Subscribe(MyClass myClass)
    {
        myClass.MyEvent += HandleEvent;
    }

    // 事件处理方法
    private void HandleEvent(object sender, EventArgs e)
    {
        Console.WriteLine("Event handled by Subscriber");
    }
}

3. 使用事件:
class Program
{
    static void Main()
    {
        // 创建实例
        MyClass myObject = new MyClass();

        // 创建订阅者
        Subscriber subscriber = new Subscriber();

        // 订阅事件
        subscriber.Subscribe(myObject);

        // 执行操作,触发事件
        myObject.DoSomething();
    }
}

在上述例子中,MyClass 中声明了一个事件 MyEvent,订阅者 Subscriber 可以通过 Subscribe 方法订阅该事件。当 MyClass 中的 DoSomething 方法被调用时,会触发事件,然后订阅者的事件处理方法 HandleEvent 将被调用。

通过使用事件,你可以实现类之间的解耦,让发布者和订阅者之间保持相对独立。这有助于实现更灵活、可维护的代码结构。


转载请注明出处:http://www.pingtaimeng.com/article/detail/14773/C#