// 定义一个委托类型
public delegate void MyDelegate(string message);
// 定义一个事件,使用上面定义的委托类型
public class Publisher
{
// 事件
public event MyDelegate MyEvent;
// 触发事件的方法
public void TriggerEvent()
{
if (MyEvent != null)
{
MyEvent("事件被触发了!");
}
}
}
// 订阅事件的类
public class Subscriber
{
private Publisher _publisher;
public Subscriber(Publisher publisher)
{
_publisher = publisher;
// 订阅事件
_publisher.MyEvent += HandleMyEvent;
}
// 事件处理方法
private void HandleMyEvent(string message)
{
Console.WriteLine($"接收到的消息: {message}");
}
}
// 测试代码
public class Program
{
public static void Main()
{
Publisher publisher = new Publisher();
Subscriber subscriber = new Subscriber(publisher);
// 触发事件
publisher.TriggerEvent();
}
}
委托(Delegate):委托是一种类型安全的函数指针,它可以引用一个或多个方法。在上面的例子中,MyDelegate
是一个委托类型,它定义了一个签名,可以引用返回类型为 void
并接受一个 string
参数的方法。
事件(Event):事件是基于委托的一种特殊用途,用于实现发布-订阅模式。在例子中,Publisher
类中的 MyEvent
是一个事件,它使用了 MyDelegate
委托类型。只有 Publisher
类内部可以触发事件,而外部类可以通过订阅该事件来接收通知。
触发事件:TriggerEvent
方法用于触发事件。它检查是否有订阅者(即 MyEvent != null
),如果有,则调用所有订阅者的处理方法。
订阅事件:Subscriber
类通过构造函数订阅了 Publisher
的 MyEvent
事件,并提供了 HandleMyEvent
方法作为事件处理程序。
测试代码:在 Main
方法中,创建了 Publisher
和 Subscriber
实例,并调用了 TriggerEvent
方法来触发事件,从而输出消息到控制台。
上一篇:c# 判断字符串是否为空
下一篇:c#treeview
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站