2009-09-29 39 views
1

這可能是我在C#繼承中忽略的東西,但我試圖構建一個實現IList(System.Collections版本,而不是泛型)的類。編譯器抱怨說我沒有實現索引器,但我正在查看CollectionBase,它也實現了IList,並且它似乎也沒有公開索引器。IList上的索引器

通過Reflector查看它似乎CollectionBase是抽象的,它確實是實現索引器,但它似乎是私有的。我試過這個也沒有骰子,編譯器堅持說如果我想實現IList,我必須有一個公共非靜態的索引器,它返回一個對象。

所以我的問題不是爲什麼我需要一個,但那個CollectionBase如何獲得一個私人索引器?

回答

2

它沒有使用明確的接口實現:

object IList.this [int index] {get;組; }

它就在那裏,你只是沒有在默認的類接口上看到它(使用COM術語) - 你必須投給IList來查看/使用它。

+0

啊,好的,謝謝。我總是忘記顯式繼承。我有時會懷疑它是否僅僅爲了避免多重繼承而避免名稱衝突。 – LoveMeSomeCode 2009-09-29 21:23:11