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"
Однако он ведет себя странно (по сравнению с 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.