C#中委托和事件一起使用
时间: 2024-09-16 14:01:22 浏览: 11
在C#中,委托(Delegate)和事件(Event)是紧密关联的概念,它们经常一起用于实现事件驱动的编程模型。简单来说:
**委托:**
委托是一种引用类型,它封装了一个指向特定方法的引用。你可以创建自定义委托,并将其视为函数指针。通过委托,可以将方法作为参数传递给其他方法,或者存储在一个变量中,以便稍后执行。
例如:
```csharp
public delegate void MyAction(string message);
```
这定义了一个名为`MyAction`的委托,接受一个字符串参数并无返回值。然后,你可以创建委托实例并绑定到具体的处理方法上:
```csharp
private void HandleMessage(string msg)
{
// 处理消息
}
MyAction action = new MyAction(HandleMessage);
```
**事件:**
事件是特殊的委托,用于在类之间传播消息,当某个状态改变时通知订阅者。它包含两个部分:事件声明和事件触发器。事件声明是`event`关键字后跟委托类型的名称;事件触发器是`+=`和`-=`操作符用于添加或移除监听器。
```csharp
public event MyAction MessageReceived;
```
当你想触发事件时,只需调用`raise`方法:
```csharp
public void SendMessage(string msg)
{
MessageReceived?.Invoke(msg); // 使用 null 安全检查防止未订阅的情况
}
```