委托:
在 C# 中,委托是一种类型,它可以用来引用一个或多个方法,并允许将这些方法作为参数传递给其他方法。
委托可以看作是函数指针,它可以用来实现回调函数、事件处理和异步编程等功能。
委托的定义使用delegate 关键字,可以指定委托的参数类型和返回类型。
例如,下面是一个简单的委托定义:
cs
delegate void MyDelegate(string message);
上述代码定义了一个名为 MyDelegate 的委托,它接受一个 string 类型的参数,并且没有返回值。
事件:
事件是委托的一种特殊用法。事件提供了一种机制,允许对象在特定的条件下触发并通知其他对象进行响应。
事件本质上是一种特殊类型的委托,它定义了一种标准的委托模式,用于处理对象之间的通信。
在 C# 中,事件的定义通常使用 event 关键字。
例如,下面是一个简单的事件定义:
cs
class MyClass
{
public event EventHandler MyEvent;
}
上述代码定义了一个名为 MyEvent 的事件,它的类型是 EventHandler ,EventHandler 是一个预定义的委托类型,用于处理不带参数的事件。
需要注意的是,事件只能在定义它的类内部触发和订阅,外部代码无法直接触发事件或者直接订阅事件。通常,事件会提供一个公共的触发方法,用于在适当的时机触发事件,并通知所有订阅者。