C# 中的委托(Delegate)和事件(Event)是强大的特性,用于实现回调机制和事件驱动编程。以下是一些关于 C# 委托和事件的基础知识和使用示例。

委托(Delegate)

委托是一种引用类型,它存储对方法的引用。委托可以看作是函数的占位符,可以在运行时调用它们。

基本语法

public delegate void MyDelegate();

这里定义了一个名为 MyDelegate 的委托,它没有参数,也没有返回值。

使用委托

public class Program
{
    public static void Main()
    {
        MyDelegate del = new MyDelegate(MyMethod);
        del();
    }

    public static void MyMethod()
    {
        Console.WriteLine("Hello, World!");
    }
}

在上述代码中,我们定义了一个方法 MyMethod,并将其分配给委托 del。然后,我们通过委托调用了 MyMethod 方法。

事件(Event)

事件是一种特殊的委托,它允许对象在特定情况下发出通知。事件的使用通常与接口和事件监听器一起使用。

基本语法

public class MyEventClass
{
    public event MyDelegate MyEvent;

    protected virtual void OnMyEvent()
    {
        MyEvent?.Invoke();
    }
}

这里定义了一个名为 MyEventClass 的类,它包含了一个名为 MyEvent 的事件。

使用事件

public class Program
{
    public static void Main()
    {
        MyEventClass eventClass = new MyEventClass();
        eventClass.MyEvent += MyMethod;

        eventClass.OnMyEvent(); // 调用事件,触发委托
    }

    public static void MyMethod()
    {
        Console.WriteLine("Event was triggered!");
    }
}

在上述代码中,我们创建了一个 MyEventClass 的实例,并将其分配给 eventClass。然后,我们将 MyMethod 方法添加到 MyEvent 事件的订阅列表中。最后,我们调用 OnMyEvent 方法来触发事件。

C# Delegate Event Example

更多关于 C# 委托和事件的信息,请参考本站的 C# 编程指南