Damn bro what the heck browser ya using I can't understand

[C#基础学习] Delegate 委托

C++中的指针可以指向对应类型的数据并对其进行操作,但是并没有可以指向某个函数并进行操作的方式。而C#中的delegate就相当于一个指向某个函数的指针,需要时可以直接调用定义的delegate函数来调用对应的函数。

定义方式:

域 delegate [数据类型] 函数名(传参)

基础用法

定义了一个delegate后,仅能将这个函数指向同数据类型、传参一致的函数。

例如如下内容:

public delegate int outNum(int n);
int print(int n)
{
return n;
}
int sum(int n)
{
return n + 10;
}
// Start is called before the first frame update
void Start()
{
outNum out1 = new outNum(print);
outNum out2 = new outNum(sum);
Debug.Log("print:"+out1(3));
Debug.Log("sum:"+out2(3));
}

输出结果为

print:3
sum:13

也可以对delegate函数进行重新定向,如下:

// Start is called before the first frame update
void Start()
{
outNum out1 = new outNum(print);
Debug.Log("print:"+out1(3));
out1 =new outNum(sum);
Debug.Log("sum:"+out1(3));
}

输出结果仍然为

print:3
sum:13

Multicasting 多播

不同于指针的是,指针做加减法会改变指针指向的地址,从而读取下一位地址的数据。而delegate的加减法则是增加所指向的函数,并按顺序处理。

如下例子:

void Start()
{
outNum out1 = new outNum(print);
outNum out2 = new outNum(sum);
out1 += out2;
Debug.Log("sum:"+out1(3));
}

输出结果为

sum:13

过程为:先执行out1初始指向的print函数,然后执行out2所指向的函数,因此是队列形式执行先后顺序。

posted @   ComputerEngine  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
点击右上角即可分享
微信分享提示