注意:這樣的調整空間會導致另外開辟內存以重新存放元素。好,最後的工作就是增加一些構造方法,比如指定排序方向,指定容量 ,以使得這個集合類的使用更為靈活://用
8. 實現IDictionary<TKey, TValue>接口由於前面實現了 IDictionary接口,現在實現IDictionary<
另外需要添加一個RemoveAt方法: // 移除指定索引元素 public void RemoveAt(int index) { if ((i
可以看到array參數並不一樣,一 個是泛型,一個是數組,所以需要為這個方法實現兩個版本,當然,我們先實現 的是ICollection接口中的CopyTo方法
下面實現了ICollection接口的兩個私有屬性:bool ICollection.IsSynchronized { get {
首先注意,全部使用了顯式接口成員實現,也 就是說,只能通過接口調用這些方法。另外它的Item屬性調用了還未實現的 IDictionary<TKey, T
上面代碼調用了IsCompatibleKey(key)方法,需要把它加上去:private static bool IsCompatibleKey(objec
6. 實現IDictionary接口中的Keys和Values屬性現在我們可以著眼於IDictionary接口的實現。第4節中,專門針對這個接口做了一 個最簡
可以看到,實現它 並不簡單,好在我們將屏蔽所有對元素進行改動的功能。當然,首先還是要要實現一個枚舉器(感覺又回到了第2節: http://cgbluesky.
同理,Values屬性枚舉時所需要的枚舉器代碼類似:ReversibleSortedListValueEnumerator#region Reversible
上面兩個IList<T>接口代碼調用了外部類的一些方法,需要把它們添加到ReversibleSortedList 類中:公有方法如下://查找指定
寫了這麼 多代碼,終於可以實現Keys和Values屬性了。首先添加這兩個屬性所需的成員變量:private KeyList<TKey, TValue&
5. 實現IEnumerable<KeyValuePair<TKey, TValue>>接口我們先來看看ReversibleSorte
從代碼中可以看出,它 把外部類中的所有元素拷貝到另一塊內存中進行枚舉,這樣在多線程訪問集合時 自然不會出錯,但如果集合中的元素很多就會帶來性能上的損失。而我們
這個嵌套類的代碼對照圖3很 容易看懂,每個方法的功能在MSDN中也有詳細的介紹,這裡不再對它進行講解。 接下來要給外部類實現IEnumerable<Ke
#對集合類型有統一的規范。它的好處不言而喻,所有集合類都有一些統一的調用方法和屬性,這使得學習成本大大降低。統一的規范就是通過接口來實現的(關於接口,如果不熟