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  阅读(43)  评论(0)    收藏  举报
相关博文:
阅读排行:
· .NET周刊【4月第1期 2025-04-06】
· 国产的 Java Solon v3.2.0 发布(央企信创的优选)
· centos停服,迁移centos7.3系统到新搭建的openEuler
· (原创)[开源][.Net Framework 4.0] SimpleLiveDataFeed(极易
· 工良出品 | 长文讲解 MCP 和案例实战
点击右上角即可分享
微信分享提示