C# 委托(Delegate):实现方法回调

简介: 委托是方法的类型,可引用方法并实现回调机制,常用于异步通知与事件触发。通过定义委托,可将方法作为参数传递,并在任务完成后调用多个回调函数,支持灵活的程序解耦与扩展。

委托是 “方法的类型”,可存储方法引用,实现回调机制(如异步通知、事件触发)。

// 定义委托(无返回值,一个string参数)
public delegate void NotifyDelegate(string message);
public class NotificationService
{
    // 委托作为参数(回调方法)
    public static void ProcessTask(string taskName, NotifyDelegate onComplete)
    {
        Console.WriteLine($"正在执行任务:{taskName}");
        // 模拟任务执行
        Thread.Sleep(1000);
        // 任务完成后回调
        onComplete?.Invoke($"{taskName}执行完成!");
    }
}
public class DelegateDemo
{
    // 回调方法1
    public static void EmailNotify(string message)
    {
        Console.WriteLine($"【邮件通知】{message}");
    }
    // 回调方法2
    public static void SmsNotify(string message)
    {
        Console.WriteLine($"【短信通知】{message}");
    }
}
// 调用示例
// 委托绑定方法(可绑定多个,形成委托链)
NotifyDelegate notify = DelegateDemo.EmailNotify;
notify += DelegateDemo.SmsNotify;
// 执行任务并回调
NotificationService.ProcessTask("C#委托学习", notify);
// 输出:
// 正在执行任务:C#委托学习
// 【邮件通知】C#委托学习执行完成!
// 【短信通知】C#委托学习执行完成!
相关文章
|
存储 缓存 弹性计算
2024年阿里云最便宜云服务器出炉:61元、165元、99元、199元
2024年截止目前阿里云最便宜的云服务器已经出炉,轻量应用服务器2核2G3M带宽61元1年、2核4G4M带宽165元1年;云服务器经济型e实例2核2G3M带宽99元1年;云服务器通用算力型u1实例2核4G5M带宽199元1年。除此之外,还有幻兽帕鲁Palworld专用服务器4核16G10M带宽只要26.52元/1个月、79.56元/3个月、149.00元/6个月,8核32G10M带宽只要90.60元/1个月、271.80元/3个月。本文为大家分享2024年阿里云最便宜的各个云服务器。
12363 4
2024年阿里云最便宜云服务器出炉:61元、165元、99元、199元
|
C语言
MQTT交叉编译(海思v300 arm-hisiv300-linux-):openssl、paho.mqtt.c、paho.mqtt.cpp
MQTT交叉编译(海思v300 arm-hisiv300-linux-):openssl、paho.mqtt.c、paho.mqtt.cpp
1711 0
MQTT交叉编译(海思v300 arm-hisiv300-linux-):openssl、paho.mqtt.c、paho.mqtt.cpp
|
SQL 网络协议 数据库
SQL Server 2019下载安装教程
SQL Server 2019下载安装教程
6834 0
|
IDE Unix 编译器
Windows下配置CMake(入门级教程,适合新人收藏学习)
Windows下配置CMake(入门级教程,适合新人收藏学习)
6787 1
|
Linux
Linux经常使用命令汇总和总结
Linux经常使用命令汇总和总结
457 1
新版本ARM交叉编译器官网下载地址(arm-none-eabi、arm-none-linux-gnueabihf、aarch64-none-elf、aarch64-none-linux-gnu)
新版本ARM交叉编译器官网下载地址(arm-none-eabi、arm-none-linux-gnueabihf、aarch64-none-elf、aarch64-none-linux-gnu)
7199 0
新版本ARM交叉编译器官网下载地址(arm-none-eabi、arm-none-linux-gnueabihf、aarch64-none-elf、aarch64-none-linux-gnu)
|
监控 JavaScript 前端开发
JavaScript 正则表达式详解
【2月更文挑战第26天】
643 1
JavaScript 正则表达式详解
|
C# 图形学 C++
使用vscode开发C#+unity没有代码提示问题
使用vscode开发C#+unity没有代码提示问题
1821 0
使用vscode开发C#+unity没有代码提示问题
|
算法 C++ UED
QML布局:如何恰当设置间隙与合理布局 (QML Layout: Proper Spacing and Alignment)
QML布局:如何恰当设置间隙与合理布局 (QML Layout: Proper Spacing and Alignment)
2995 0