9. 完善
大樓已經蓋好,剩下的工作就是裝修,裝修好就可以入住了 。從本文的題目得知,這是一個可反轉排序的集合類,但我們只實現了降序插入 功能,如果希望把升序轉換為降序該怎麼辦呢?此例的解決方法是聲明一個代表 排序方向的屬性Comparer,並加入一個sort方法,調用sort方法時根據Comparer 屬性進行排序:
private ListSortDirection _currentSortDirection = ListSortDirection.Descending;
public SortDirectionComparer<TKey> Comparer
{
get
{
return this._sortDirectionComparer;
}
}
public void Sort()
{
// 檢查是否跟現有排序方向相同.
if (this._currentSortDirection != this._sortDirectionComparer.SortDirection)
{
// 如果不同,則進行反轉.
Array.Reverse (this.keys, 0, this._size);
Array.Reverse (this.values, 0, this._size);
// 設置當前排序.
this._currentSortDirection = this._sortDirectionComparer.SortDirection;
}
}
其中SortDirectionComparer類是第二節所聲明的類,請參考:
http://cgbluesky.blog.163.com/blog/static/241235582008113103320 661/
接下來再增加一個剪除多余空間的功能:
//剪除多 余空間
public void TrimExcess()
{
int num1 = (int)(this.keys.Length * 0.9);
if (this._size < num1)
{
this.Capacity = this._size;
}
}
當然,需要給Capacity屬性添加set方法
public int Capacity //容量屬性
{
get
{
return this.keys.Length;
}
set
{
this.InternalSetCapacity(value, true);
}
}