C# & Unity 面向对象补全计划 之 委托

本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正

1.委托

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

委托的基本概念:

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

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

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

委托的基本用法

声明委托:

//声明委托:
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);

b1dbd3f10dc14f98ad47158835543851.png

委托的高级用法

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泛型委托

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

关于泛型我在这里挖个坑,回头把泛型的博客连接贴过来:【C# & Unity 面向对象补全计划 泛型 - CSDN App】https://blog.csdn.net/2301_77947509/article/details/140848589?type=blog&rId=140848589&refer=APP&source=2301_77947509

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.执行回调函数内逻辑

b6a71cb3f69d49b89921463ac8b4d1e4.png

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值