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"
Однако, он ведет себя странно (по сравнению с IDictionary) при добавлении ключа несколько раз:
var coll = new NameValueCollection();
coll.Add("Z", "1");
coll.Add("A", "2");
coll.Add("Z", "3");
Console.WriteLine(coll[0]); // prints "1,3"
поведение хорошо документирована, однако.
Предупреждение: NameValueCollection
не реализация IDictionary
.
Как и в сторону: Dictionary<K,V>
не имеет индекс можно использовать, но до тех пор, как вы только добавить элементы, и никогда не удаляйте, порядок элементов является порядок вставки. Обратите внимание, что это деталь текущей реализации Microsoft: в документации явно указано, что порядок случайный, поэтому это поведение может измениться в будущих версиях .NET Framework или Mono.
Это замечательно. Альтернатива Hashtable и Dictionary, которая проста. Кроме того, примечание о порядке сортировки словаря по умолчанию очень полезно. –
Не забудьте добавить: using System.Collections.Specialized; –