Un NameValueCollection
puede recuperar los elementos por el índice (pero no se puede pedir el índice de una tecla específica o elemento). Así,
var coll = new NameValueCollection();
coll.Add("Z", "1");
coll.Add("A", "2");
Console.WriteLine("{0} = {1}", coll.GetKey(0), coll[0]); // prints "Z = 1"
Sin embargo, se comporta extrañamente (en comparación con un IDictionary) cuando se agrega una tecla varias veces:
var coll = new NameValueCollection();
coll.Add("Z", "1");
coll.Add("A", "2");
coll.Add("Z", "3");
Console.WriteLine(coll[0]); // prints "1,3"
El comportamiento está bien documentado, sin embargo.
Precaución: NameValueCollection
hace no implemente IDictionary
.
Como acotación al margen: Dictionary<K,V>
no tiene ningún índice que puede utilizar, pero siempre y cuando se agrega sólo los elementos, y nunca eliminar cualquier, el orden de los elementos es el orden de inserción. Tenga en cuenta que este es un detalle de la implementación actual de Microsoft: la documentación establece explícitamente que el orden es aleatorio, por lo que este comportamiento puede cambiar en futuras versiones de .NET Framework o Mono.
Esto es genial. Una alternativa a Hashtable y Dictionary que es simple. Además, la nota sobre el orden de clasificación predeterminado de Dictionary es muy útil. –
Recuerde agregar: usando System.Collections.Specialized; –