首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

C# 委托

  • 25-03-07 17:42
  • 3367
  • 6275
blog.csdn.net
本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正

1.委托

在 C# 中,委托(Delegate)是一种引用类型,它允许你封装一个方法的引用。委托类似于 C++ 中的函数指针,但更安全和灵活。委托可以用于定义回调方法、事件处理程序等。

委托的基本概念:

  1. 委托声明:定义委托的签名

  2. 委托实例化:创建委托对象并绑定方法

  3. 调用委托:通过委托对象调用方法

委托的基本用法

声明委托:

  1. //声明委托:
  2. delegate void D(string f);

添加函数:

  1. //任意定义一个函数
  2. void Function1(string a) {
  3. Console.WriteLine(a);
  4. }
  5. D d = new D(Function1);//注意被传入函数要和委托函数的参数和返回一致

调用委托:

  1. d.Invoke("这段话最终会被传入Function1函数");
  2. //d("这段话最终会被传入Function1函数"); 或者采用这种调用方法

总览:

  1. D d = new D(Function1);//注意被传入函数要和委托函数的参数和返回一致
  2. d.Invoke("这段话最终会被传入Function1函数");
  3. //d("这段话最终会被传入Function1函数"); 或者采用这种调用方法
  4. //任意定义一个函数
  5. void Function1(string a) {
  6. Console.WriteLine(a);
  7. }
  8. //声明委托:
  9. delegate void D(string f);

委托的高级用法

1.1多播委托

说白了就是一个委托的实例化,添加多个函数

具体逻辑需要在函数中处理,而不是在委托层面,实际上也大多也是在函数中处理不同逻辑

  1. D d = new D(Function1);
  2. d += Function2;
  3. d.Invoke("这是给该函数的消息");
  4. //任意定义一个函数
  5. void Function1(string a) {
  6. Console.WriteLine("Function1:" + a);
  7. }
  8. void Function2(string a) {
  9. Console.WriteLine("Function2:" + a);
  10. }
  11. //声明委托:
  12. delegate void D(string f);

1.2泛型委托

只要你学了泛型,就会声明并使用,所以不过多赘述

关于泛型我在这里挖个坑,回头把泛型的博客连接贴过来:写文章-CSDN创作中心

  1. R<string> r = new R<string>(Function3);
  2. r.Invoke("给Function3传入一段文字");
  3. R<int> rr = new R<int>(Function4);
  4. rr(1114514);
  5. void Function3(string s) {
  6. Console.WriteLine(s);
  7. }
  8. void Function4(int i)
  9. {
  10. Console.WriteLine(i);
  11. }
  12. delegate void R<T>(T t);

1.3函数回调

函数回调(Callback Function)是一种编程机制,指的是将一个函数作为参数传递给另一个函数,并在特定事件或条件发生时调用这个函数

  1. MainFunciton(Callback);
  2. //创建你需要使用回调函数的主函数
  3. void MainFunciton(D d) {
  4. Console.WriteLine("正在处理...");
  5. d("完成处理");
  6. }
  7. //创建一个回调函数
  8. void Callback(string s)
  9. {
  10. Console.WriteLine("该函数已执行回调..."+s);
  11. }
  12. //定义一个委托
  13. delegate void D(string s);

下图为string s这个参数的逻辑顺序:当然你可以从定义的角度出发去理解他的定义顺序

0.声明一个委托为前提

1.为你的主函数传入一个作为参数的回调函数

2.回调函数入口

3.执行回调函数内逻辑

注:本文转载自blog.csdn.net的咩咩觉主的文章"https://blog.csdn.net/2301_77947509/article/details/140634592"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top