2010-03-12 79 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 
}