// 定义委托类型
public delegate void NotifyDelegate(string message);
// 定义一个类,包含事件
public class Publisher
{
// 声明事件
public event NotifyDelegate NotifyEvent;
// 触发事件的方法
public void TriggerEvent(string message)
{
// 检查是否有订阅者
if (NotifyEvent != null)
{
NotifyEvent(message);
}
}
}
// 订阅者类
public class Subscriber
{
private string _name;
public Subscriber(string name, Publisher publisher)
{
_name = name;
// 订阅事件
publisher.NotifyEvent += HandleNotification;
}
// 事件处理方法
private void HandleNotification(string message)
{
Console.WriteLine($"{_name} received: {message}");
}
}
// 测试代码
public class Program
{
public static void Main()
{
Publisher publisher = new Publisher();
Subscriber subscriber1 = new Subscriber("Subscriber 1", publisher);
Subscriber subscriber2 = new Subscriber("Subscriber 2", publisher);
// 触发事件
publisher.TriggerEvent("Hello World!");
}
}
委托定义:
public delegate void NotifyDelegate(string message);NotifyDelegate 的委托类型,它表示一个没有返回值且接受一个字符串参数的方法。事件声明:
Publisher 类中,使用 event 关键字声明了一个名为 NotifyEvent 的事件,该事件的类型是前面定义的 NotifyDelegate。触发事件:
TriggerEvent 方法用于触发事件。在触发之前,检查 NotifyEvent 是否为空(即是否有订阅者),如果不为空则调用所有订阅者的处理方法。订阅者类:
Subscriber 类表示一个订阅者,它在构造函数中订阅了 Publisher 的事件,并提供了一个事件处理方法 HandleNotification。测试代码:
Main 方法中,创建了 Publisher 和两个 Subscriber 实例,然后通过调用 TriggerEvent 方法来触发事件,所有订阅者都会接收到消息并输出到控制台。这样就实现了一个简单的发布-订阅模式,展示了 C# 中委托和事件的基本用法。
上一篇:c# 遍历list
下一篇:c#实例
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站