接口的默认实现是什么意思?

8
我在许多文档示例中看到过这个语句,例如这里

该类是“ISomeInterface”接口的默认实现。

这到底意味着什么?谢谢。
3个回答

9
这有点误导人,因为按定义,接口不提供实现。
然而,框架的许多部分都试图使生活更轻松 - 因此它们提供了一个方法,该方法接受一个接口,但也提供一个没有参数的重载。一个很好的例子是List<T>.Sort
这里的文档建议,如果您使用通常需要IComparer<T>的方法,但通过某个不需要它的重载使用它,那么您将获得引用的“默认实现”。
然而,这实际上是与接口本身无关的类的“实现细节”。我个人认为,这在文档中是一个不好的选择,应该是更像这样的东西:
许多框架中的类型依赖于由Comparer类提供的此接口的公共实现。
在我看来,这会更清楚一些...

1
我真的很喜欢这样的解释! =) - Will Marcouiller
1
@Will:谢谢!我会尽力的 ;) - Reed Copsey
添加一些内容。有时,框架使用特殊情况模式(或空对象模式),接口的默认实现可以是该模式的一部分。 :) - Lex Li

3
这意味着,当您调用没有参数的 Sort 方法(即没有显式指定比较器)时,它会使用这个默认实现。

0

这意味着这个类是实现接口的那个类。它指向实现接口本身而没有任何派生或继承成员,只有接口本身。这个类直接对应于这个接口。

public interface IComparer {
    // Some members to implement here.
}

public class Comparer : IComparer {
    // IComparer members implementation
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接