如何使用委托和事件在C#中实现通信?
时间: 2024-10-22 21:07:25 浏览: 14
在C#中,委托和事件是用于实现对象之间松耦合通信的重要机制。以下是它们的基本使用方法:
1. **委托**:委托是一种引用类型,它封装了对方法的引用。你可以创建一个委托,并指定它可以调用的具体方法。例如:
```csharp
public delegate void MyEventHandler(string message);
```
然后,你可以创建委托实例并关联具体的处理方法:
```csharp
private MyEventHandler myEvent;
myEvent += MyMethod; // 将MyMethod方法绑定到委托
void MyMethod(string message) {
Console.WriteLine(message);
}
```
2. **事件**:事件是特殊的委托,用于在对象状态改变时通知其他对象。在C#中,通过`event`关键字声明事件,通过`raise`或`Invoke`来触发事件:
```csharp
public event MyEventHandler MyEvent;
...
public void RaiseEvent(string message) {
MyEvent?.Invoke(message); // null检查防止未订阅者抛出异常
}
```
客户端可以订阅(添加事件处理程序)和取消订阅(移除事件处理程序):
```csharp
button.Click += OnButtonClick;
...
private void OnButtonClick(object sender, EventArgs e) {
RaiseEvent("Button clicked");
}
// 取消订阅
button.Click -= OnButtonClick;
```
阅读全文