5. 实现IEnumerable<KeyValuePair<TKey, TValue>>接口
我们先来看看ReversibleSortedList类定义:
public ReversibleSortedList<TKey, TValue> :
IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>,
IEnumerable<KeyValuePair<TKey, TValue>>, IDictionary, ICollection, IEnumerable
它共实现了6个接口但从本质上来说实现IDictionary<TKey, TValue>接口和IDictionary接口就等同于实现了以上6个接口IDictionary<TKey, TValue>继承自ICollection<KeyValuePair<TKey, TValue>>和IEnumerable<KeyValuePair<TKey, TValue>>接口而IDictionary接口继承自ICollection和IEnumerable接口下面我们来看下这些接口关系图:
ReversibleSortedList<, >;
rs.Add(3,"a");
rs.Add(1,"b");
rs.Add(2,"c");
rs.Add(6,"d");
rs.Add(5,"e");
rs.Add(4,"f");
foreach (KeyValuePair<, > d in rs)
{
Console.WriteLine(d.Key + " " + d.Value);
}
}
由于代码已经达到300行贴到博客上会导致运行缓慢后面所有可运行代码将以文件形式给出大家可以直接下载运行
ReversibleSortedList 0.4版本:实现迭代
运行结果:
1 b
2 c
3 a
4 f
5 e
6 d
真棒现在已经取得了阶段性成果但还有些遗憾虽然在Enumerator类中实现了IDictionaryEnumerator接口但还不能在foreach中使用DictionaryEntry访问元素这是IDictionary接口重载了GetEnumerator接口而它返回是个IDictionaryEnumerator接口也就是说只有实现了IDictionary接口才能使用DictionaryEntry访问其中元素实现IDictionary接口的前我们需要建立些辅助内部类这将在下节进行讲解
最新评论