所以我对 C# 中的委托(delegate)有点困惑....它们的作用是什么以及它们有什么用?我读过一些教程,但我并没有真正理解它们应该做什么(每个人都将它们与 C 中的函数指针相关联,而我从未用 C 编程过)。
那么...委托(delegate)做什么?我应该在什么情况下使用它们?我将如何使用它们?
最佳答案
其他答案都不错,但这里有另一种思考委托(delegate)的方法可能会有帮助。想象一下,委托(delegate)只不过是一个接口(interface)。当你看到:
delegate void Action();
思考:
interface IAction
{
void Invoke();
}
当你看到:
Action myAction = foo.Bar;
思考:
class FooBarAction : IAction
{
public Foo Receiver { get; private set; }
public FooBarAction(Foo foo)
{
this.Receiver = foo;
}
public void Invoke()
{
this.Receiver.Bar();
}
}
...
IAction myAction = new FooBarAction(foo);
当你看到
myAction();
思考
myAction.Invoke();
构造什么类型的实际细节有点不同,但基本上就是这样。委托(delegate)只是一个具有名为 Invoke 的方法的对象,当您调用该方法时,它会委托(delegate)您调用其他对象的其他方法。这就是它被称为“委托(delegate)”的原因——因为它委托(delegate)对另一个对象的另一个方法的调用。
关于c# - .NET 中委托(delegate)的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7681699/