原hashtable以1,2,3的整数键值插入,但反序列化后并用foreach访问时,无论哪种方式,用debug.print显示的值顺序,都是3,2,1这样的逆序。据说字符串型的键值,还会以字符码顺序排列。不太清楚foreach的内部排序规则。
那么一种办法就是将Hashtable的key值集合排序。但也需要额外的步骤。hashtable.keys.Copyto方法可将keys集合拷入一个Array类型,比如string[]或Int32[]等。而string数组或Int32数组是可用Array.sort()静态方法排序的。问题在于Keys的元素只能作为object类型进行拷贝,而Object[]默认无法排序。仍然比较麻烦。
由于读出顺序为3,2,1,所以在列表控件里add时,会显示为3,2,1的顺序。其实用Inert(0,row)的方法即可绕开此问题。新元素将被插在列表控件的0索引处,这样高序号项目将被逐条挤到高序号,而最小元素会最后停留在0索引的位置,正好实现意图。
原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/494.html