首页 / 软件开发 / C# / 构建可反转排序的泛型字典类(9完)--完善
构建可反转排序的泛型字典类(9完)--完善2010-11-269. 完善大楼已经盖好,剩下的工作就是装修,装修好就可以入住了 。从本文的题目得知,这是一个可反转排序的集合类,但我们只实现了降序插入 功能,如果希望把升序转换为降序该怎么办呢?此例的解决方法是声明一个代表 排序方向的属性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);
}
}