为什么说c#的委托相当于c++中的指针呢?

RT```有什么相似的地方呢?
2025-05-04 17:11:09
推荐回答(4个)
回答1:

标准的说法是:委托是类型安全指针。它接收的是一个函数的地址。地址就是指针,但委托是安全的(由CLR保证),而C++的指针是不安全的,实际上因为指针而导致应用程序崩溃是困扰C++多年的问题,委托的出现在一定程序上彻底解决了这个问题。

回答2:

C#中采用委托的方式,其实和C++的typedef非常相像,都是必须先定义一个类型,然后用该类型去声明一个变量。最大的不同在赋值阶段,C++只需要简单的将函数地址赋给指针,而C#必须用new声明一个对象,并且还要求相应的函数作为形参传入。在这个阶段,似乎C#显得更为复杂。到了调用阶段,C++和C#都可以容器后加个括号就能完成调用,但C++还多了一种*的方式。

回答3:

不是C++中的指针, 类似C++中的 函数指针
函数指针是指向函数的指针.
委托也可以指向某个函数.

不过函数指针一次只能只一个函数.
而委托可以指多个函数(多波委托)

回答4:

回调函数
C++、Pascal 和其他语言支持函数指针的概念,允许在运行时选择要调用哪些函数。
C# 为了实现回调,搞了一个Delegate 类,封装一个实体的方法,通俗点就是指向了方法的入口点。但C#是类型安全的。