我有兴趣找到C#中的delegate和C ++中的function pointer之间的区别。
答案 0 :(得分:29)
C#中的委托是一个带有内置迭代器的类型安全函数指针。
保证指向具有指定签名的有效函数(与C不同,指针可以转换为指向谁知道什么)。它还支持迭代多个绑定函数的概念。
在C#中,委托是多播,这意味着他们可以迭代多个函数。例如:
class Program
{
delegate void Foo();
static void Main(string[] args)
{
Foo myDelegate = One;
myDelegate += Two;
myDelegate(); // Will call One then Two
}
static void One()
{
Console.WriteLine("In one..");
}
static void Two()
{
Console.WriteLine("In two..");
}
}
答案 1 :(得分:7)
C#中的委托可以是同步的,也可以是异步的;除非您编写自己的多线程功能,否则C ++函数指针是同步的。
C / C ++中的指针不需要引用一个完整的对象。 C有函数指针,没有面向对象的语言支持。代表是真正的功能对象。