前節 SimpleDictionary 將鍵值複製到新陣列回傳 ICollection,頻繁存取會造成記憶體壓力與 GC 負擔,且 ICollection 缺乏索引器,無法支援 keys[3] 存取。
ICollection 為基底介面,子介面 IList、IDictionary 均支援索引存取。因 Keys/Values 單純為鍵或值序列,IList<T> 最貼切。

圖示說明 IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable,實作它即自動滿足 IDictionary.Keys 需回傳 ICollection 的規範(共變性)。
IList<TKey> Keys、IList<TValue> Values 屬性。KeyList/ValueList 封裝外部陣列參考,實作 IList<T>。IsReadOnly=true),禁止外部修改破壞排序不變性。