寫了這麼 多代碼,終於可以實現Keys和Values屬性了。
首先添加這兩個屬性所需的成員變量:
private KeyList<TKey, TValue> keyList;
private ValueList<TKey, TValue> valueList;
然後實現Keys和Values屬性,以上這麼多代碼,就是為了這兩 個屬性:
public IList<TKey> Keys
{
get
{
return this.GetKeyListHelper();
}
}
public IList<TValue> Values
{
get
{
return this.GetValueListHelper();
}
}
看到這,你是不是有些不 耐煩了,反正我是有這樣的感覺了。但有一點你必須明白,FCL裡的代碼就是這麼實現的。
好,做了這麼多工作,終於可以看看成果, 測試一下是否可用了。在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");
//打印鍵 /值
foreach (KeyValuePair<int, string> d in rs)
{
Console.WriteLine(d.Key + " " + d.Value);
}
//打印鍵,這裡訪問了Keys屬性
foreach (int i in rs.Keys)
{
Console.Write(i + " ");
}
Console.WriteLine();// 換行
//打印值,這裡訪問了Values屬性
foreach (string s in rs.Values)
{
Console.Write(s + " ");
}
Console.WriteLine();//換行
Console.WriteLine (rs.Keys[3]); //通過索引訪問鍵
Console.WriteLine(rs.Values[4]); //通過索引訪問值
}
上帝啊 !太痛苦了,如果你也有這樣的感覺,請下載現成的代碼,更改Main()方法裡的東西,嘗試是否能通過Keys和Values屬性更改元素。
ReversibleSortedList 0.5版本:實現Keys和Values屬性
運行結果:
1 b
2 c
3 a
4 f
5 e
6 d
1 2 3 4 5 6
b c a f e d
4
e
本文配套源碼