假设我们有:
interface Foo
{
bool Func(int x);
}
class Bar: Foo
{
bool Func(int x)
{
return (x>0);
}
}
class Baz: Foo
{
bool Func(int x)
{
return (x<0);
}
}
现在我们可以将 Bar 和 Baz 作为 Foos 来回折腾,并调用它们的 Func 方法。
委托(delegate)对此进行了一些简化:
delegate bool Foo(int x);
bool Bar(int x)
{
return (x<0);
}
bool Baz(int x)
{
return (x>0);
}
现在我们可以将 Bar 和 Baz 作为 Foo 委托(delegate)来回折腾了。
除了缩短代码之外,委托(delegate)的真正好处是什么?
最佳答案
略有不同,委托(delegate)可以访问它们定义的类的成员变量。在 C# 中(与 Java 不同),所有内部类都被认为是静态的。因此,如果您使用接口(interface)来管理回调,例如按钮的 ActionListener。实现内部类需要传递(通过构造函数)对包含类的部分的引用,它可能需要在回调期间与之交互。委托(delegate)没有此限制,因此减少了实现回调所需的代码量。
更短、更简洁的代码也是一个有值(value)的好处。
关于c# - 委托(delegate)不只是简写接口(interface)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/95954/