什么是delegate?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

我不明白delegate的实际作用是什么?我在面试中被问过很多次这个问题,但我不认为面试官对我的回答满意。

有谁能用一个实际的例子,告诉我最好的答案吗?

提问于
用户回答回答于

我喜欢把delegate看作是“指向函数的指针”。这可以追溯到C时代,但这个想法仍然有效。

这个想法是,你需要能够调用一段代码,但是要调用的代码要到运行时才知道。所以你用一个“delegate”来达到这个目的。delegate对于事件处理程序之类的事情是有用的,例如,你根据不同的事件执行不同的事情。

可以参考C#的

用户回答回答于

delegate只是一个函数指针。

简单地说,可以分配要运行delegate的方法。然后在代码中,可以通过它调用该方法。

一些代码

delegate void delMyDelegate(object o);

private void MethodToExecute1(object o)
{
    // do something with object
}

private void MethodToExecute2(object o)
{
    // do something else with object
}

private void DoSomethingToList(delMyDelegate methodToRun)
{
    foreach(object o in myList)
        methodToRun.Invoke(o);
}

public void ApplyMethodsToList()
{
    DoSomethingToList(MethodToExecute1);
    DoSomethingToList(MethodToExecute2);
}

扫码关注云+社区