Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c#委托和事件

作者:风中孤狼   发布日期:2025-10-22   浏览:88

// 定义委托类型
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!");
    }
}

解释说明

  1. 委托定义:

    • public delegate void NotifyDelegate(string message);
    • 这里定义了一个名为 NotifyDelegate 的委托类型,它表示一个没有返回值且接受一个字符串参数的方法。
  2. 事件声明:

    • Publisher 类中,使用 event 关键字声明了一个名为 NotifyEvent 的事件,该事件的类型是前面定义的 NotifyDelegate
  3. 触发事件:

    • TriggerEvent 方法用于触发事件。在触发之前,检查 NotifyEvent 是否为空(即是否有订阅者),如果不为空则调用所有订阅者的处理方法。
  4. 订阅者类:

    • Subscriber 类表示一个订阅者,它在构造函数中订阅了 Publisher 的事件,并提供了一个事件处理方法 HandleNotification
  5. 测试代码:

    • Main 方法中,创建了 Publisher 和两个 Subscriber 实例,然后通过调用 TriggerEvent 方法来触发事件,所有订阅者都会接收到消息并输出到控制台。

这样就实现了一个简单的发布-订阅模式,展示了 C# 中委托和事件的基本用法。

上一篇:c# 遍历list

下一篇:c#实例

大家都在看

c# 二进制

c# tcp client

c# type.gettype

c# sqlconnection

c# string.format 小数位数

.net和c#

c#获取系统时间

c#游戏开发

c#网络编程

c# rectangle

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站