我认为委托实例可以与函数实例互换。委托实例和方法指针有什么区别?
看看下面的代码:
delegate int AddDelegate(int a, int b);
AddDelegate DelegateInstance;
public void DoStuff()
{
//I can call this without a delegate "instance":
MethodThatTakesAdd(Add);
//I can also call it WITH a delegate "instance"
DelegateInstance = Add;
MethodThatTakesAdd(DelegateInstance);
}
public int Add(int a, int b)
{
return a + b;
}
public void MethodThatTakesAdd(AddDelegate addFunction)
{
Console.WriteLine(addFunction(1, 2).ToString());
}
调用它似乎相当于的两种方式,如果你只使用C#中,你永远不会看到其中的差别(至少我还没有达到这点)。不过,我最近是托管代码的非托管代码,它们的处理方式不同。例如,在一种情况下,如果我直接将该函数用作回调函数(即使我的对象实例保留在附近),我将得到错误“回调是在垃圾回收委托上进行的”。使用“委托实例”可以解决问题。
有没有人知道有什么区别?
il是什么样的?有没有任何迹象表明“底层”,他们通常会被区别对待? – 2009-11-05 16:53:03