2010-03-12 50 views
8

我已经在许多机制的文档样本中看到这种说法的默认实现意味着,像here是什么接口

这个类是“ISomeInterface”界面的默认实现

这究竟意味着什么?谢谢

回答

9

这有些误导,因为根据定义,接口没有提供实现。

但是,框架的许多部分试图让生活更轻松 - 所以它们提供了一种接受接口的方法,但也提供了没有参数的过载。一个很好的例子是List<T>.Sort

这里的文档建议,如果您使用的方法通常需要一个IComparer<T>,但通过一些不重载的重载来使用它,您将会得到引用的“默认实现”。

但是,这实际上是与接口本身无关的类的“实现细节”。我个人认为这是在文档中的单词一个糟糕的选择,而且应该是更多的东西一样:

许多类型的框架依赖于一个共同实现由 的的Comparer类提供此接口。

这,在我看来,提供了更明确的含义,以这...

+1

我真的很喜欢这样的解释! =) – 2010-03-12 19:47:34

+1

@ will:谢谢!我尽我所能;) – 2010-03-12 19:48:01

+0

添加一些东西。有时,框架使用特殊情况模式(或空对象模式),接口的默认实现可以是模式的一部分。 :) – 2010-03-13 01:06:09

3

这意味着,当您调用Sort方法没有参数(没有明确指定比较器),它将使用此默认实现。

0

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

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

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