首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

打造可逆向排序的泛型字典類 (六 起):為何 Keys/Values 回傳 IList<T> 而非 ICollection

     編輯:關於C語言

簡易版 Keys/Values 的缺陷

前節 SimpleDictionary 將鍵值複製到新陣列回傳 ICollection,頻繁存取會造成記憶體壓力與 GC 負擔,且 ICollection 缺乏索引器,無法支援 keys[3] 存取。

尋找支援索引的介面

ICollection 為基底介面,子介面 IList、IDictionary 均支援索引存取。因 Keys/Values 單純為鍵或值序列,IList<T> 最貼切。

IList<T> 介面關係圖

IList 介面關係圖

圖示說明 IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable,實作它即自動滿足 IDictionary.Keys 需回傳 ICollection 的規範(共變性)。

設計決策

  • 公開 IList<TKey> Keys、IList<TValue> Values 屬性。
  • 內部以 KeyList/ValueList 封裝外部陣列參考,實作 IList<T>。
  • 屬性為唯讀(IsReadOnly=true),禁止外部修改破壞排序不變性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved