C#委托和事件怎么一起使用
时间: 2024-09-19 09:01:10 浏览: 26
在 C# 中,委托和事件经常结合使用来实现松耦合的行为。委托允许你在程序运行时动态地绑定方法到特定的操作,而事件则是用来公开对象的状态变化或行为。下面是一个简单的示例:
首先,定义一个委托类型,通常基于`EventHandler`或其泛型形式,比如处理某个特定类型的事件参数:
```csharp
public delegate void MyCustomEvent(object sender, EventArgs e); // 或者<TEventArgs> MyCustomEvent<TEventArgs>(object sender, TEventArgs e);
```
接着,在类中声明一个事件,该事件类型就是刚才定义的委托:
```csharp
public class MyClass
{
public event MyCustomEvent CustomEvent;
}
```
当状态改变或需要触发行为时,你可以通过事件来通知订阅者:
```csharp
private void RaiseEvent()
{
if (CustomEvent != null)
{
CustomEvent(this, EventArgs.Empty); // 或者指定事件参数类型
}
}
```
最后,外部类可以订阅这个事件并提供相应的处理逻辑:
```csharp
MyClass obj = new MyClass();
obj.CustomEvent += OnMyCustomEvent;
// 处理方法
private void OnMyCustomEvent(object sender, EventArgs e)
{
Console.WriteLine($"Custom event raised by {sender}");
}
```
这样,每当`RaiseEvent()`被调用时,所有已订阅`CustomEvent`的函数都会被执行。