上面代碼調用了IsCompatibleKey(key)方法,需要把它加上去:
private static bool IsCompatibleKey(object key)
{ //用於檢查鍵的類型並返回一個bool值
if (key.Equals (null))
{
throw new ArgumentNullException("key");
}
return (key is TKey);
}
其中, IDictionaryEnumerator IDictionary.GetEnumerator()方法是我們期待已久的 ,實現了它就可以在foreach中使用DictionaryEntry訪問集合中的元素。另外 Remove方法調用了IDictionary<TKey, TValue>接口的Remove方法。當然 ,我們還未實現它,這是第二次這樣了,看樣子還是首先應該實現泛型接口再實 現非泛型接口。教訓慘痛啊!寫了這麼多,懶得改了,大家知道就行了。
好!終於完成了,現在終於可以看看成果了。改變Main方法如下:
static void Main()
{
ReversibleSortedList<int, string> rs = new ReversibleSortedList<int, string>();
//添加元素
rs.Add(3, "a");
rs.Add(1, "b");
rs.Add(2, "c");
rs.Add(6, "d");
rs.Add(5, "e");
rs.Add(4, "f");
//使用DictionaryEntry打 印鍵/值
foreach (DictionaryEntry d in (IDictionary)rs)
{
Console.WriteLine(d.Key + " " + d.Value);
}
}
ReversibleSortedList 0.6版本:實現IDictionary接口
運行結果:
1 b
2 c
3 a
4 f
5 e
6 d
很遺憾,由於IDictionary.GetEnumerator()是顯 式接口成員實現,只能使用接口調用。接下來,終於可以實現最重要的一個接口 IDictionary<TKey, TValue>了。
本文配套源碼