按顺序对Hashtable进行排序

Tod*_*ain 6 .net c# vb.net collections hashtable

这类似于如何在hashtable中保持元素的顺序, .NET除外.

是否有任何HashtableDictionary在.NET中允许您.Index按照添加到集合中的顺序访问它的属性?

Rub*_*ben 5

A NameValueCollection可以通过索引检索元素(但是您不能要求特定键或元素的索引).所以,

var coll = new NameValueCollection();
coll.Add("Z", "1");
coll.Add("A", "2");
Console.WriteLine("{0} = {1}", coll.GetKey(0), coll[0]); // prints "Z = 1"
Run Code Online (Sandbox Code Playgroud)

但是,当您多次添加键时,它的行为很奇怪(与IDictionary相比):

var coll = new NameValueCollection();
coll.Add("Z", "1");
coll.Add("A", "2");
coll.Add("Z", "3");
Console.WriteLine(coll[0]); // prints "1,3"
Run Code Online (Sandbox Code Playgroud)

然而,这种行为已有详细记录.

注意:NameValueCollection没有没有实现IDictionary.


另外:Dictionary<K,V>没有任何可以使用的索引,但只要您只添加元素,而不删除任何索引,元素的顺序就是插入顺序.请注意,这是Microsoft当前实现的详细信息:文档明确声明该顺序是随机的,因此在.NET Framework或Mono的未来版本中,此行为可能会更改.