【问题标题】:what is meant by default implementation of an interface接口的默认实现是什么意思
【发布时间】:2010-03-12 19:40:14
【问题描述】:

我在许多文档样本中都看到过这种说法,比如here

这个类是“ISomeInterface”接口的默认实现

这究竟意味着什么?谢谢

【问题讨论】:

    标签: c# .net interface


    【解决方案1】:

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

    然而,框架的许多部分都试图让生活更轻松——因此它们提供了一种采用接口的方法,但也提供了不带参数的重载。一个很好的例子是List<T>.Sort

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

    然而,这实际上是与接口本身无关的类的“实现细节”。我个人认为这是文档中的一个糟糕的用词选择,应该更像:

    框架中的许多类型都依赖于由 比较器类。

    在我看来,这将为这个提供更清晰的含义......

    【讨论】:

    • 我真的很喜欢这样的解释! =)
    • @Will:谢谢!我尽力了;)
    • 添加一些东西。有时,框架使用特殊情况模式(或空对象模式),接口的默认实现可以是该模式的一部分。 :)
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      public interface IComparer {
          // Some members to implement here.
      }
      
      public class Comparer : IComparer {
          // IComparer members implementation
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-06-02
        • 1970-01-01
        • 2020-08-13
        • 1970-01-01
        • 2016-12-11
        • 2016-07-15
        • 1970-01-01
        相关资源
        最近更新 更多