如标题中所述-有人可以给我一个在运行时使用委托将委托替换为另一个对象的示例吗?最近,我们在演讲中描述了委派的好处,但没有给出实际的示例来带来上述好处。
谢谢!
答案 0 :(得分:0)
假设我们有一个这样的C#委托:
delegate int Calculate(int x, int y);
这样做的好处是,当方法foo
期望在其参数中进行Calculate
委托时,如下所示:
void foo(Calculate calculate)
{
var result = calculate(1, 2);
// ...
}
我们可以轻松地将与委托的签名匹配的任何方法传递给foo
。例如,如果我们已经有类sum
的方法Math
,我们可以像这样简单地调用foo
:
foo(mathObject.sum);
像Java中一样,没有委派,我们必须使Calculate
作为接口,并且必须使Math
类实现Calculate
。如果不允许我们修改Math
类的源代码,则必须编写一个适配器(适配器设计模式)。那是很多额外的工作。