本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正
1.委托
在 C# 中,委托(Delegate)是一种引用类型,它允许你封装一个方法的引用。委托类似于 C++ 中的函数指针,但更安全和灵活。委托可以用于定义回调方法、事件处理程序等。
委托的基本概念:
-
委托声明:定义委托的签名
-
委托实例化:创建委托对象并绑定方法
-
调用委托:通过委托对象调用方法
委托的基本用法
声明委托:
//声明委托: delegate void D(string f);添加函数:
//任意定义一个函数 void Function1(string a) { Console.WriteLine(a); } D d = new D(Function1);//注意被传入函数要和委托函数的参数和返回一致调用委托:
d.Invoke("这段话最终会被传入Function1函数"); //d("这段话最终会被传入Function1函数"); 或者采用这种调用方法总览:
D d = new D(Function1);//注意被传入函数要和委托函数的参数和返回一致 d.Invoke("这段话最终会被传入Function1函数"); //d("这段话最终会被传入Function1函数"); 或者采用这种调用方法 //任意定义一个函数 void Function1(string a) { Console.WriteLine(a); } //声明委托: delegate void D(string f);
委托的高级用法
1.1多播委托
说白了就是一个委托的实例化,添加多个函数
具体逻辑需要在函数中处理,而不是在委托层面,实际上也大多也是在函数中处理不同逻辑
- D d = new D(Function1);
- d += Function2;
- d.Invoke("这是给该函数的消息");
-
-
- //任意定义一个函数
- void Function1(string a) {
-
- Console.WriteLine("Function1:" + a);
- }
-
- void Function2(string a) {
-
- Console.WriteLine("Function2:" + a);
- }
-
- //声明委托:
- delegate void D(string f);
1.2泛型委托
只要你学了泛型,就会声明并使用,所以不过多赘述
关于泛型我在这里挖个坑,回头把泛型的博客连接贴过来:写文章-CSDN创作中心
- R<string> r = new R<string>(Function3);
- r.Invoke("给Function3传入一段文字");
- R<int> rr = new R<int>(Function4);
- rr(1114514);
-
-
- void Function3(string s) {
- Console.WriteLine(s);
-
- }
- void Function4(int i)
- {
- Console.WriteLine(i);
- }
- delegate void R<T>(T t);
1.3函数回调
函数回调(Callback Function)是一种编程机制,指的是将一个函数作为参数传递给另一个函数,并在特定事件或条件发生时调用这个函数
- MainFunciton(Callback);
- //创建你需要使用回调函数的主函数
- void MainFunciton(D d) {
-
- Console.WriteLine("正在处理...");
-
- d("完成处理");
- }
-
-
- //创建一个回调函数
- void Callback(string s)
- {
- Console.WriteLine("该函数已执行回调..."+s);
- }
-
- //定义一个委托
- delegate void D(string s);
下图为string s这个参数的逻辑顺序:当然你可以从定义的角度出发去理解他的定义顺序
0.声明一个委托为前提
1.为你的主函数传入一个作为参数的回调函数
2.回调函数入口
3.执行回调函数内逻辑
评论记录:
回复评论: