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#委托学习执行完成!
相关文章
|
1月前
|
Ubuntu 芯片 Windows
掌握timedatectl命令:Ubuntu 系统时间管理指南
掌握timedatectl命令:Ubuntu 系统时间管理指南
369 121
|
2天前
|
安全 C#
C# 事件(Event):基于委托的观察者模式
事件是基于委托的封装机制,仅支持订阅与取消订阅,确保成员安全。常用于实现观察者模式,如订单状态变更时通知各系统,实现松耦合设计。
|
2天前
|
JSON C# 数据格式
C# JSON 序列化与反序列化:Newtonsoft.Json 用法
JSON是前后端交互常用格式,Newtonsoft.Json(Json.NET)是C#中最流行的JSON处理库。本文介绍如何使用它实现对象与JSON字符串的序列化和反序列化,并提供封装工具类及调用示例,便于在项目中快速集成与使用。
|
2天前
|
C# 数据安全/隐私保护
C# 正则表达式:快速匹配与验证
正则表达式用于字符串模式匹配,如手机号、邮箱、密码验证等。C# 通过 `System.Text.RegularExpressions` 命名空间中的 `Regex` 类实现。本文示例展示了使用 `RegexHelper` 工具类进行常见验证:`IsPhoneNumber` 验证中国大陆手机号(1开头,共11位);`IsEmail` 校验邮箱格式;`IsValidPassword` 判断密码是否包含字母和数字且长度为8-20位;`ExtractNumbers` 提取字符串中所有数字。代码简洁高效,适用于数据校验与文本处理场景。
|
2天前
|
存储 安全 C#
C# 数组与集合:List<T> 最常用场景
数组长度固定,集合(List&lt;T&gt;)可动态增删,支持泛型与类型安全。常用操作包括添加、删除、遍历和查询元素,是开发中首选的动态数据存储方式。
|
2天前
|
存储 开发框架 缓存
C# 实现图片验证码的 WebAPI 版(ASP.NET Core)
基于ASP.NET Core实现的验证码服务,生成带干扰线和随机旋转文字的4位图文验证码,支持内存存储与验证。需安装System.Drawing.Common包。
|
2天前
|
C# 索引
C# 循环结构:for/foreach/while 效率对比
循环用于重复执行代码,根据场景选择:for 适合已知次数,foreach 简洁遍历集合,while 适用于条件控制。示例演示遍历商品价格列表并计算总和,展示三种循环的用法与差异。(239字)
|
2天前
|
存储 缓存 安全
C# 实现带过期时间的本地缓存工具
基于ConcurrentDictionary与定时清理机制,实现线程安全的本地缓存,支持键值过期自动清除。每分钟扫描并移除过期项,有效防止内存溢出,适用于需短暂存储数据的场景,如用户会话、临时配置等,保障性能与稳定性。
|
2天前
|
C#
C# 实现简单的 Excel 数据写入工具
基于EPPlus库实现C#将数据写入Excel文件,支持自定义表头与多行数据,自动调整列宽,操作简便,适用于非商业场景的数据导出需求。
|
2天前
|
存储 C#
C# 实现简单的备忘录模式
备忘录模式在不破坏封装性的前提下,捕获并保存对象的内部状态,以便后续恢复。通过原发器创建备忘录,管理者存储备忘录,可实现状态回滚。

热门文章

最新文章