程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 構建可反轉排序的泛型字典類(7)--實現IDictionary接口(5)

構建可反轉排序的泛型字典類(7)--實現IDictionary接口(5)

編輯:關於C語言

上面代碼調用了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>了。

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved