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

c# 委托和事件

作者:事到如今我依如故ゝ   发布日期:2025-04-16   浏览:102

// 定义一个委托类型,它代表了一个方法的签名
public delegate void Notify(string message);

// 定义一个包含事件的类
public class Publisher
{
    // 声明一个事件,基于上面定义的委托类型
    public event Notify OnNotify;

    // 触发事件的方法
    public void TriggerEvent()
    {
        if (OnNotify != null)
        {
            // 触发事件并传递参数
            OnNotify("事件被触发了!");
        }
    }
}

// 订阅者类
public class Subscriber
{
    // 构造函数中订阅事件
    public Subscriber(Publisher publisher)
    {
        // 订阅Publisher类的OnNotify事件
        publisher.OnNotify += HandleEvent;
    }

    // 事件处理方法
    private void HandleEvent(string message)
    {
        Console.WriteLine($"接收到消息: {message}");
    }
}

// 测试代码
class Program
{
    static void Main(string[] args)
    {
        Publisher publisher = new Publisher();
        Subscriber subscriber = new Subscriber(publisher);

        // 触发事件
        publisher.TriggerEvent();
    }
}

解释说明:

  1. 委托(Delegate)Notify 是一个委托类型,它定义了一个方法的签名。在这个例子中,Notify 代表了一个返回 void 并接收一个 string 参数的方法。

  2. 事件(Event)Publisher 类中的 OnNotify 是一个事件,它基于 Notify 委托类型。事件允许发布者在某个特定时刻通知所有订阅者。

  3. 订阅者(Subscriber)Subscriber 类订阅了 PublisherOnNotify 事件,并在事件触发时调用 HandleEvent 方法来处理事件。

  4. 触发事件TriggerEvent 方法用于触发事件,当事件被触发时,所有订阅者的处理方法都会被执行。

  5. 测试代码:在 Main 方法中,创建了一个 Publisher 和一个 Subscriber,然后通过调用 TriggerEvent 方法来触发事件,最终输出消息到控制台。

上一篇:c# razor

下一篇:c# rtsp

大家都在看

c# 二进制

c# tcp client

c# type.gettype

c# sqlconnection

.net和c#

c#游戏开发

c#网络编程

c# rectangle

c# if else

c# rtsp

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

Laravel 中文站