C# 委托 订阅发布
时间: 2023-07-12 17:18:51 浏览: 93
在 C# 中,委托也可以用于实现订阅发布模式。委托是一种特殊的类型,它可以存储对一个或多个方法的引用,允许将方法作为参数传递给其他方法,并且可以用于事件的处理。
以下是使用委托实现订阅发布模式的示例代码:
```
class Program
{
static void Main(string[] args)
{
MyPublisher publisher = new MyPublisher();
MySubscriber subscriber = new MySubscriber();
publisher.MyEvent += subscriber.OnMyEvent;
publisher.DoSomething();
}
}
class MyPublisher
{
public delegate void MyEventHandler(object sender, EventArgs e);
public event MyEventHandler MyEvent;
public void DoSomething()
{
Console.WriteLine("Publisher is doing something...");
MyEvent?.Invoke(this, EventArgs.Empty);
}
}
class MySubscriber
{
public void OnMyEvent(object sender, EventArgs e)
{
Console.WriteLine("Subscriber is handling the event...");
}
}
```
在上面的代码中,MyPublisher 定义了一个委托类型 MyEventHandler,并将其用作 MyEvent 事件的类型。MySubscriber 订阅了 MyEvent 事件,并在 OnMyEvent 方法中处理该事件。
需要注意的是,委托的订阅和取消订阅也必须在相同的作用域中进行。在上面的代码中,订阅和取消订阅都是在 Main 方法中进行的。如果将订阅操作移到 MySubscriber 类中,将会得到编译错误。
阅读全文