想使用Hashtable中的键/值对特性,但又发现在遍历Hashtable时,出来的顺序与之前添加进去的顺序不一样。
后来,发现同样可以实现键/值对特性的结构SortedList类。看起来比Hashtable简单。
如何实现,看下面代码:
private SortedList _site = new SortedList(new NoSort());
#region NoSort
/// <summary>
/// 不排序规则
/// </summary>
private class NoSort: IComparer
{
public int Compare(object x, object y)
{
return -1;
}
}
#endregion
遍历的代码如下:
foreach(DictionaryEntry de in _site)
{
this.ddlSiteValue.Items.Add(new ListItem(de.Value.ToString(), de.Key.ToString()));
}
其实,并没有使用Hashtable,不过Hashtable应该也可以按这种思路实现。关键在于IComparer接口中的比较方法。
用到集合排序的地方,一般都会继承该接口,自定义符合自己逻辑的实现。